2015-03-21 4 views
-1

J'ai besoin d'envoyer des données hexadécimales comme une commande à mon port série en utilisant Delphi.
Les données Hex comme "0x1b 0x31".Envoyer hexadécimal comme 0x1b 0x31 au port com en Delphi

Quelle est la procédure à suivre?
writestring() ou writebuffer()? Comment les utiliser?

+0

Quel composant 'TComPort' utilisez-vous? Ce composant ['TComPort'] (http://sourceforge.net/projects/comport) n'a pas de méthode' WriteBuffer' (je n'ai récupéré que la version 4.11f). Je suggère que la balise [tag: tcomport] soit correctement décrite (s'il s'agit de composants TurboPower, ou de la bibliothèque TComPort que j'ai liée dans ce commentaire, ou autre), ou devrait être détruite comme étant ambiguë. – TLama

Répondre

2

Si vous utilisez TComPort de ComPort Library (SourceForge), puis appelez la méthode WriteStr():

ComPort.WriteStr(chr($1b)); 

Si vous utilisez TApdComPort de TurboPower composant, utilisez la méthode PutChar() (selon que la commande que vous souhaitez envoyer est 1b $) :

ApdComPort1.PutChar(char($1b); 
+0

Merci TridenT il fonctionne bien – hytham

+2

Ad ComPort Library, si le but est d'envoyer deux octets (pas deux chars, ni 1 char comme indiqué dans ce post), vous devez utiliser la méthode 'Write'. Dans TP, il existe une méthode similaire, 'PutBlock'. Sauf que la commande devrait être déclarée comme une constante, pas comme un nombre magique. Mais prenez ce commentaire comme une note sur la façon de faire les choses correctement, hytham. Si vous êtes content * ça marche *, alors vous devriez envoyer vos deux octets char par char dans ce cas. – TLama