2010-12-08 33 views
1

Je développe un script Perl pour transférer des données entre le micrologiciel Bluetooth (BT connecté via USB) et l'équipement de test (connecté via un port série). J'utilise le module Perl Win32::SerialPort. Je peux obtenir des données de l'équipement en format ASCII spécial (☻ Black Smiley .. ♥ coeur noir ...). Quand je le convertis en hexagone, j'obtiens l'opcode que mon firmware peut traiter. En retour, le firmware BT envoie une commande complete opcode back.Transfert de données entre le port série et le périphérique à l'aide du module Perl Win32 :: SerialPort

Problème débute ici ... Lorsque j'essaie de réécrire sur le port série à l'aide de $ PortObj-> write (opcode (hex)), l'équipement de test ne le reconnaît pas. Que devrais-je faire ici?

+0

L'erreur est probable à la ligne 42. Si vous aviez fourni un petit échantillon du programme que vous écrivez, vous seriez en mesure de mieux cerner le problème. Sans cela, on ne peut que se demander académiquement ce qui peut causer le problème. Je suppose que vous n'allez pas envoyer le port série à ce que vous pensez que vous envoyez. – mfontani

+0

ok je suppose que la fonction pack en perl fonctionne pour moi :) .. @ input = (0x04,0x0e, 0x04,0x01,0x03,0x0c, 0x00); $ ascii = pack ("C *", @input); print "la valeur est $ ascii"; $ PortObj-> write ($ ascii) || die "Impossible d'écrire sur $ PortName: $^E \ n" ;; – user2829

Répondre

2

ok je suppose que la fonction pack en Perl fonctionne pour moi :) ..

@ entrée = (0x04,0x0e, 0x04,0x01,0x03,0x0c, 0x00);

$ ascii = pack ("C *", @input);

print "la valeur est $ ascii";

$ PortObj-> write ($ ascii) || die "Impossible d'écrire dans $ PortObj: $^E \ n";