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
| void __fastcall TForm1::Button4Click(TObject *Sender)
{
HDEVINFO devs;
GUID intfce;
HANDLE USBhandle;
DWORD written = 0;
// \\\\.\\USB#Vid_067b&Pid_2305#5&c4772aa&0&2#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}
USBhandle = CreateFile ("\\\\.\\USB#Vid_067b&Pid_2305#5&c4772aa&0&2#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}",
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_SYSTEM,
NULL
); // Référence pour les opérations asynchrones.f you supply a handle under Windows 95, the call fails and GetLastError returns ERROR_NOT_SUPPORTED
// message d'erreur
// si Ok " Opération réussie "
// si Erreur " Le fichier spécifié est introuvable "
ShowMessage(SysErrorMessage(GetLastError()));
// Paquet Jeton (TOKEN)
char command1[6] = {0x01, // SYNC
0x87, // PID OUT 0001->1000 complement 1110->0111 envoye 10000111->0X87
0x80, // ADDR 01->0x80
0x40, // ENDP 02->40
0xB8, // CRC5 1D->B8
0x01}; // EOF
// Paquet Donnees (DATA)
char command2[6] = {0x01, // SYNC
0xC3, // DATA0
0x01, // donnees envoyees
0xE4, // CRC16 02->40 FD->BF - A727->E4E5
0xE5,
0x01}; // EOF
// Paquet de control (HANDSHAKE)
char command3[3] = {0x01, // SYNC
0x4B, // ACK
0x01}; // EOF
// WriteFile &gOverlapped
int a = WriteFile(USBhandle, command1, 6, &written, NULL);
// message d'erreur
//ShowMessage(SysErrorMessage(GetLastError()));
a = WriteFile(USBhandle, command2, 6, &written, NULL);
// message d'erreur
ShowMessage(SysErrorMessage(GetLastError()));
a = WriteFile(USBhandle, command3, 3, &written, NULL);
// message d'erreur
ShowMessage(SysErrorMessage(GetLastError()));
CloseHandle( USBhandle );
} |