Bonsoir
Toujours dans mes dialogues série.
J'essaie de passer par des exemples de code en utilisant les API de Windows.
Voici la fonction que j'utilise pour écrire sur le port série, et qui a où semble avoir un fonctionnement bizarre.
Si je comprend bien la fonction "WriteFile" ci dessous :
On stocke la valeur à envoyer dans une variable "Buffer" et on indique le nombre de caractères de la chaine à envoyer dans la variable suivante.
Je ne comprends pas pourquoi on ne déclare dans la variable buffer que le 1er caractère de la chaine ?
Voici la bizarrerie que je ne comprends pas et que je constate dans la routine ci-dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Function WriteStr(st:string):integer; var s:string; bytesWritten: DWORD; begin Result:=0; if hComm = INVALID_HANDLE_VALUE then result:=-1 else begin if not WriteFile(hComm,st[1], Length(St), bytesWritten, nil) then Result:=-2; end; end;
Quand j’envoie une chaine, seuls la valeur les caractères impair sont bien envoyés et les valeurs des caractères pair est toujours égal à "0".
je dois donc faire des envoies caractères par caractères, ce qui me semble pas normal.
Qu'en pensez vous ?
Partager