Bonjour,
J'ai réalisé une petite application qui fait établir une communication (envoi et réception des données via un port série) entre un pc et un automate.
Je travaille sous Visual Studio 2013 en c#, avec Windows 8 - 64 bits.
Un extrait de donnée que je reçois :
123456789
326547891
145879260
000005000
....
J'ai réalisé l'exécutable de l'application qui fonctionne sur un pc sous Windows xp- 32 bit.
le problème , quand je travaille avec l'application sous 64 bit, elle fonctionne bien j'arrive à recevoir les donnée correctement a partir de l'automate.
Mais quand je suis sous 32 bit, je reçois la 1er ligne correctement en suit le reste je reçois les autre données mais il y' a en plus des symbole,
exp:
123456789
_-,?\ 0.2:/
la je suis bloquer, j'ai aucune aidée de quoi ça peut être ?
Voilà le bout de code qui me permet de recevoir les données, vu que c# travaille en Unicode :
{ char[] buffer = new char[255]; // on crée un char de 255 caractere int longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length); //lecture du buffer jusqu'a sa longeur buffer.Length //tes characteres sont contenus dans buffer. //on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
for (int i = 0; i < longueur_bytes_read; i++) {
value += buffer[i];
StatusLabel1.Text = "Transfert en cours..."; }
} //pour afficher les données
private void button1_ecrir_Click(object sender, EventArgs e) { int nombre = System.Convert.ToInt32(value);
textBox1.AppendText(nombre + "\r\n"); }
A voir également:
[renommé] lecture port série différente entre W8 64 et Xp
Apres si cela ne résout pas ton problème, il faudrait que tu journalises chaque étape dans un fichier texte par exemple pour voir ou ca cloche, puisque tu ne peux pas exécuter en mode debug.
bonjour,
merci pour le retour, j'ai fait quelque recherche et je voulais essayé de changer le codage en UTF8
public string value = string.Empty;
private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
serialPort2.Write("\u000D");// lance la tach envoiFil
while (serialPort2.BytesToRead > 0)
{
// char[] buffer = new char[255]; // on crée un char de 255 caractere
byte[] buffer =new byte[255];// nouveau
int longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length); //lecture du buffer jusqu'a sa longeur buffer.Length
//tes characteres sont contenus dans buffer.
//on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
for (int i = 0; i < longueur_bytes_read; i++)
{
//value += buffer[i];
value = Encoding.UTF8.GetString(buffer);//nouveau
}
StatusLabel1.Text = "Transfert en cours...";
}
}
private void button1_ecrir_Click(object sender, EventArgs e)
{
textBox1.AppendText(value + "\r\n");
}
le résultat: que j'ai plus de symbole mais le problème que les donnée sans pas celle qu'il faut afficher (c'est d'autre données différente de celle que je veux)
voila le code:
public string value = string.Empty;
private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
serialPort2.Write("\u000D");// lance la tach envoiFil
while (serialPort2.BytesToRead > 0)
{
//char[] buffer = new char[255]; // on crée un char de 255 caractere
byte[] buffer =new byte[255];// nouveau
int longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length); //lecture du buffer jusqu'a sa longeur buffer.Length
//tes characteres sont contenus dans buffer.
//on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
for (int i = 0; i < longueur_bytes_read; i++)
{
value += buffer[i];
}
StatusLabel1.Text = "Transfert en cours...";
}
}
private void button1_ecrir_Click(object sender, EventArgs e)
{
textBox1.SelectedText = string.Empty;
textBox1.AppendText(value.ToString() + "\r\n");
}
Concatène les éléments d'un tableau d'objets, à l'aide du séparateur spécifié entre chaque élément.
Or tu veux concatener un tableau de bytes, cela parait donc un outil adapté.
Je ne sais pas si ça va solutionner ton problème, mais au moins tu utiliseras le bon outil.