Je dois gérer une chaîne de quatre moteurs en utilisant un port série. Le manuel utilisateur indique que lors de l'initialisation que je dois envoyer (par exemple) les chaînesC# commande d'envoi via le port série
Z
1ECHO
2ECHO
3ECHO
4ECHO
Et me dit de le faire, dans un code que je ne reconnais pas, avec des commandes
PRINT(#128, "Z", #13)
PRINT(#129, "ECHO", #13)
PRINT(#130, "ECHO", #13)
PRINT(#131, "ECHO", #13)
PRINT(#132, "ECHO", #13)
To expliquer cela, le manuel ajoute une phrase que je ne comprends pas:
avec les chaînes ci-dessus, vous pouvez initialiser les moteurs via le moteur logiciel, mais un hôte pr ogram doivent envoyer les mêmes commandes avec différents préfixe: 0, 1, 2, 3 et 4 sont en fait 0x80, 0x81, 0x82, 0x83 et 0x84, respectivement. Les équivalents décimaux de valeurs hexadécimaux sont 128, 129 , 130, 131 et 132.
Un collègue a écrit un code de travail dans Visual Basic comme suit:
SerialPort.Output(chr(128) & "Z" & chr(13))
SerialPort.Output(chr(129) & "ECHO" & chr(13))
SerialPort.Output(chr(130) & "ECHO" & chr(13))
SerialPort.Output(chr(131) & "ECHO" & chr(13))
SerialPort.Output(chr(132) & "ECHO" & chr(13))
J'ai traduit en .NET avec:
SerialPort.Write((char)128 + "Z" + (char)13);
SerialPort.Write((char)129 + "ECHO" + (char)13);
SerialPort.Write((char)130 + "ECHO" + (char)13);
SerialPort.Write((char)131 + "ECHO" + (char)13);
SerialPort.Write((char)132 + "ECHO" + (char)13);
Mais cela ne fonctionne pas.
Maintenant, je ne peux pas essayer, mais je me demande si elle peut travailler à réécrire mon code comme ceci:
SerialPort.Write("Z" + (char)13);
SerialPort.Write("1ECHO" + (char)13);
SerialPort.Write("2ECHO" + (char)13);
SerialPort.Write("3ECHO" + (char)13);
SerialPort.Write("4ECHO" + (char)13);
Si ça marche, pourquoi ça marche? Et si cela ne fonctionne pas, comment traduire correctement le code de mon collègue?
Bienvenue dans Stack overflow, s'il vous plaît être plus précis avec _ne marche pas_. Est-ce que le programme compile? Est-ce qu'il sort quelque chose sur le port série? Veuillez également commencer par [this] (https://stackoverflow.com/help/mcve). – vasek
Eh bien, la première traduction devrait fonctionner. Je recommande que vous essayez de regarder votre sortie en utilisant quelque chose comme ceci: https://freeserialanalyzer.com/ Il ya longtemps, mais quand j'ai tripoté avec la communication série, j'ai fait un câble renifleur pour surveiller la communication via un port COM secont que j'avais installé: https://www.lammertbies.nl/comm/cable/RS-232-spy-monitor.html –
@HenrikClausen en fait la traduction ne fonctionnera pas et [ces remarques] (https : //msdn.microsoft.com/en-us/library/y2sxhat8 (v = vs.110) .aspx # Anchor_2) explique pourquoi. – vasek