salut

conf windows XP code Blocks win32 gui

pouvez vous me dire si ce code me permet d'envoyer un octet dont la valeur correspond a la lettre B avec les bonnes valeurs vitesse 9600baud pas de parité 1 bit stop ?
j'utilise portmon
dans la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
WriteFile (hPort, // Instance d'accès de votre port série
               &Byte, //Pointeur sur la donnée à envoyer
               sizeof(unsigned char),//Nombre de byte à envoyer
               &dwNumBytesWritten,   
               //byte écrit dans le buffer
               NULL);
le deuxièmes paramètre ne devrait il pas écrire Byte aux lieux de &Byte ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <windows.h>
#include <string.h>
 
 
int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nCmdShow)
{
 
    DWORD dwNumBytesWritten=0;
    char Byte = 'B';
    HANDLE hPort;
    LPSTR lpszPortName = TEXT("COM1");
    hPort = CreateFile (
                lpszPortName,                  //port com1
                GENERIC_READ | GENERIC_WRITE,  //accès en lecture ou en écriture
                FILE_ATTRIBUTE_SYSTEM,                             //Share mode
                NULL,                          //Pointer to the security attribute
                OPEN_EXISTING,                 //Cela indique que l'instance sera créée
                //à condition que le port de
                //communication demandé existe
                //et donc est connu de l'OS
                0,                             //Port attributes
                NULL);
    if (hPort == INVALID_HANDLE_VALUE)
    {
        MessageBox(NULL, TEXT("erreure"), TEXT("erreur createFile"), MB_OK);
 
    }
 
 
 
 
    PurgeComm(hPort,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
 
    DCB PortDCB;//structure DCB
    GetCommState (hPort,&PortDCB); // Structure de configuration
    PortDCB.DCBlength = sizeof (DCB);
    PortDCB.BaudRate = 9600;
    PortDCB.fBinary = TRUE;
    PortDCB.fParity = FALSE;
    PortDCB.fOutxCtsFlow = FALSE;
    PortDCB.fOutxDsrFlow = FALSE;
    PortDCB.fDtrControl = DTR_CONTROL_ENABLE;
    PortDCB.fDsrSensitivity = FALSE;
    PortDCB.fTXContinueOnXoff = FALSE;
    PortDCB.fOutX = FALSE;
    PortDCB.fInX = FALSE;
    PortDCB.fErrorChar = FALSE;
    PortDCB.fNull = FALSE;
    PortDCB.fRtsControl = RTS_CONTROL_ENABLE;
    PortDCB.fAbortOnError = FALSE;
    PortDCB.ByteSize = 8;
    PortDCB.Parity = NOPARITY;
    PortDCB.StopBits = ONESTOPBIT;
 
 
    if (!SetCommState (hPort, &PortDCB))
    {
        MessageBox(NULL, TEXT("erreur"), TEXT("erreur structure"), MB_OK);
        //Mettre ici votre code d'erreur
    }
 
    WriteFile (hPort, // Instance d'accès de votre port série
               &Byte, //Pointeur sur la donnée à envoyer
               sizeof(unsigned char),//Nombre de byte à envoyer
               &dwNumBytesWritten,   //Pointer sur la variable contenant le nombre
               //byte écrit dans le buffer
               NULL);
 
 
 
 
 
    CloseHandle(hPort);
 
}
portmon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
0	0.00004302	port com.exe	IRP_MJ_CREATE	Serial0	SUCCESS	Options: Open 	
1	0.00000307	port com.exe	IOCTL_SERIAL_PURGE	Serial0	SUCCESS	Purge: TXABORT RXABORT TXCLEAR RXCLEAR	
2	0.00000112	port com.exe	IOCTL_SERIAL_GET_BAUD_RATE	Serial0	SUCCESS		
3	0.00000084	port com.exe	IOCTL_SERIAL_GET_LINE_CONTROL	Serial0	SUCCESS		
4	0.00000112	port com.exe	IOCTL_SERIAL_GET_CHARS	Serial0	SUCCESS		
5	0.00000084	port com.exe	IOCTL_SERIAL_GET_HANDFLOW	Serial0	SUCCESS		
6	0.00000084	port com.exe	IOCTL_SERIAL_GET_BAUD_RATE	Serial0	SUCCESS		
7	0.00000084	port com.exe	IOCTL_SERIAL_GET_LINE_CONTROL	Serial0	SUCCESS		
8	0.00000084	port com.exe	IOCTL_SERIAL_GET_CHARS	Serial0	SUCCESS		
9	0.00000084	port com.exe	IOCTL_SERIAL_GET_HANDFLOW	Serial0	SUCCESS		
10	0.00000754	port com.exe	IOCTL_SERIAL_SET_BAUD_RATE	Serial0	SUCCESS	Rate: 9600	
11	0.00000335	port com.exe	IOCTL_SERIAL_SET_RTS	Serial0	SUCCESS		
12	0.00000363	port com.exe	IOCTL_SERIAL_SET_DTR	Serial0	SUCCESS		
13	0.00000251	port com.exe	IOCTL_SERIAL_SET_LINE_CONTROL	Serial0	SUCCESS	StopBits: 1 Parity: NONE WordLength: 8	
14	0.00000112	port com.exe	IOCTL_SERIAL_SET_CHAR	Serial0	SUCCESS	EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13	
15	0.00000251	port com.exe	IOCTL_SERIAL_SET_HANDFLOW	Serial0	SUCCESS	Shake:1 Replace:40 XonLimit:2048 XoffLimit:512	
16	0.00001481	port com.exe	IRP_MJ_WRITE	Serial0	SUCCESS	Length 1: B	
17	0.00000168	port com.exe	IRP_MJ_CLEANUP	Serial0	SUCCESS		
18	0.01199454	port com.exe	IRP_MJ_CLOSE	Serial0	SUCCESS