2010-08-12 8 views
1

J'ai un périphérique série connecté à mon ordinateur au port COM. Je veux envoyer des données hexadécimales à cet appareil, quelle est la meilleure approche pour envoyer des données à l'appareil.Comment envoyer des données à un périphérique externe

Par exemple, j'ai cette DATA-

String hexStr = "02303033434333d3037313131303131323639393130333131303139033f"; 

Ce que je fais en ce moment iS

 byte[] unsignedByte = HexUtil.convertToBytes(hexStr); 
serialPort.getOutputStream().write(unsignedByte); 

Le problème que je suis face est - dispositif série ne répond pas? Lorsque j'envoie la même chaîne hexadécimale via un logiciel, le terminal répond. Est-ce que je fais quelque chose de mal?

C'est une partie du code-

    mOutputToPort.write(unsignedByte);   
     logger.info("Byte Sent"); 
     mOutputToPort.flush(); 
     logger.info("Waiting for response"); 
     Thread.sleep(10000); 
     byte mBytesIn [] = new byte[2000];   
     int num = mInputFromPort.read(mBytesIn); 
     System.out.println("Number of bytes read -"+ num); 

     for(byte b : mBytesIn){ 
      System.out.print(b); 
      System.out.print(" "); 
     } 
     System.out.println();  

Salut les gars, j'ai finalement trouvé par moi-même comment le faire correctement. Je n'envoyais pas de données au format correct. J'ai découvert pendant que je surveille l'échange de données en série en utilisant un autre logiciel.

la meilleure façon d'envoyer des données à un appareil de série est - DATA ASCII -> STRING HEX -> UNSIGNED BYTE

+0

Pouvez-vous envoyer ce que vous voulez dire par ASCII DATA -> HEX STRING -> UNSIGNED BYTE dans le code? Pour ce que je comprends est que votre ancien code fait cela (chaîne ascii à hex octets) – Harmen

Répondre

0

Vous pouvez flush() le outputstream après les opérations d'écriture. Essayez si cela aide:

byte[] unsignedByte = HexUtil.convertToBytes(hexStr); 
serialPort.getOutputStream().write(unsignedByte); 
serialPort.getOutputStream().flush(); // <- new line added here 
+0

Salut les gars, j'ai finalement découvert par moi-même comment le faire correctement. Je n'envoyais pas de données au format correct. J'ai découvert pendant que je surveille l'échange de données en série en utilisant un autre logiciel. Le meilleur moyen d'envoyer des données à un périphérique série est ASCII DATA – user381878

Questions connexes