Bonjour,
J'aimerais envoyer certaines informations(trame) au port série.
Comment puis-je faire ca en CSharp.
ps: j'ai déjà cherché un peu sur le net mais n'ai rien trouvé de concluant.
Merci
Version imprimable
Bonjour,
J'aimerais envoyer certaines informations(trame) au port série.
Comment puis-je faire ca en CSharp.
ps: j'ai déjà cherché un peu sur le net mais n'ai rien trouvé de concluant.
Merci
regarde là si cela peut t'intéresser ... ;)
http://msdn2.microsoft.com/en-us/lib...DownFilterText
Mosco.
Sinon fait une recherche sur le forum, il y a plein de posts qui en parle. ;)
Mosco.
Merci.
Juste pour un ptit coup de main (je débute).
si j'écris ce code
SerialPort Port = new SerialPort();
Port. --> je n'ai pa accés aux méthodes
Pourquoi ?
tu as penser à
;)Code:using System.IO.Ports;
Mosco.
Oui, j'y avait pensé :-) mais ca va, j'ai trouvé l'erreur...
Sinon, Pouvez-vous me dire ceuque vous pensez de ca. Je dois créer une DLL qui permettrait d'interfacer une application et le Bancontact.
Biensur, je ne trouve aucunes informations sur le net mais j'ai une doc de
Banksys qui m'explique les trames a lui envoyer.
Donc je devrais passer par le port série et lui envoyer la trame générée pour l'initialiser et communiquer avec celui-ci.
Trame :
STX | SEQ | VIC-MESSAGE | ETX | CRC(lsb) | CRC (msb)
STX = Marque le début d’un segment : Toujours égal à 0x02
SEQ= est un compteur
VIC-MESSAGE : Message VIC à voir plus loin.
ETX=Marque la fin d’un segment, toujours égal a 0x03
CRC= Grâce aux codes de redondances cycliques, on vérifié s’il durant le rtransport il n’y a pas eu d’erreur.
VIC-MESSAGE
VIC_protocol_id | VIC_MSG_CODE | VIC_BITMAP | FIELD1 | FIELD2 | FIELD n
VIC_Protocol_ID = Numéro de version ici, 1,07 donc 01 07. Si c’est différent, alors problème de compatibilité.
VIC_Msg_CODE = (spécifie le type de message selon des constantes)
56 44 = vmc_debit_request
56 43 = vmc_Cancel
50 44 = pdv_debit_result
5045 = pdv_error
VIC_Bitmap = a une longeur de 8, 16 ou 24 Byte. Indique les champs qui suivront.
D'apres vous, je dois créer ma succesion de Bits (trame) et l'envoyer simplement au buffer du port série ?
lol.. je sais c'est un peu compliqué mais bon .. j 'm'en sors pas la...
J'ai fait dernierement ce type de logiciel qui dialoguait via le port série avec une carte electronique, et la solution retenu etait la suivante:
Créer un flux de type memoryStream... faire ensuite le "remplissage" avec de "bete" : WriteByte(), WriteDouble(); etc.. bref , en utilisant la "panoplie" de méthode du memoryStream et apres, j'emettais tout cela vers le port Série :)
LE code donnait un truc comme cela :)
CA devrait aider , non ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 MemoryStream buf = new MemoryStream(); BinaryWriter writer = new BinaryWriter(buf, Encoding.UTF8); IntercomCtrl com = panel1.Controls["Item" + i.ToString()] as IntercomCtrl; writer.Write((byte)i); writer.Write((byte)main.Conf.IntercomNbFields); writer.Write((byte)com.UserMode); writer.Write(com.UserPhone.ToCharArray()); if (com.UserPhone.Length < 15) { byte[] fill = new byte[15 - com.UserPhone.Length]; writer.Write(fill); } writer.Write(com.UserMessage.ToCharArray()); if (com.UserMessage.Length < 99) { byte[] fill = new byte[99 - com.UserMessage.Length]; writer.Write(fill); } SerialPort1.Write(buf.ToArray(), 0, (int)buf.Length);
The Monz, Toulouse