Ik heb een datakabel voor mijn GSM die middels een virtuele compoort (het is in feite een USB-kabel) kan communiceren met programma's op mijn pc. Ik wil in C++ een programma schrijven dat onder Windows kan communiceren met mijn GSM.
Aangezien ik dit nog nooit eerder heb gedaan wilde ik gaan leren door een communicatieproces van een al bestaand programma te reverse engineeren; dit doe ik met het programma Serial Monitor dat mij exact kan vertellen wat er allemaal op een serial port gebeurt en door wie dat gebeurt. Ook staat hier in hex de data per commando bij, zodat ik met wat knutselen het gedrag van het bestaande programma vrijwel exact kan nabootsen.
Zoals uit het middelste stuk blijkt heb ik op basis van het bestaande programma wat beslissingen genomen waardoor het *exact* het gedrag het programma emuleert. Geen idee wat de waarde 8 is, maar ik weet wel dat EV_RXCHAR geen effect heeft.
Het gedeelte waar ik naar de compoort schrijf bestaat uit een WriteFile(...) en werkt goed, kan Serial Monitor me vertellen. Toch blijft mijn programma hangen en krijg ik nooit de hemelse 'yay!' op mijn scherm te zien
iemand een idee?
Aangezien ik dit nog nooit eerder heb gedaan wilde ik gaan leren door een communicatieproces van een al bestaand programma te reverse engineeren; dit doe ik met het programma Serial Monitor dat mij exact kan vertellen wat er allemaal op een serial port gebeurt en door wie dat gebeurt. Ook staat hier in hex de data per commando bij, zodat ik met wat knutselen het gedrag van het bestaande programma vrijwel exact kan nabootsen.
C++:
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
| //Connect to COM port 3 hComPort = CreateFile( "\\\\.\\COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ); (...) //Set event mask if (!SetCommMask(hComPort, 8)) { //no idea why this must be 8 (...) } (...schrijf naar compoort...) //Wait for event DWORD mask; if (WaitCommEvent(hComPort, &mask, NULL)) { printf("yay!"); } |
Zoals uit het middelste stuk blijkt heb ik op basis van het bestaande programma wat beslissingen genomen waardoor het *exact* het gedrag het programma emuleert. Geen idee wat de waarde 8 is, maar ik weet wel dat EV_RXCHAR geen effect heeft.
Het gedeelte waar ik naar de compoort schrijf bestaat uit een WriteFile(...) en werkt goed, kan Serial Monitor me vertellen. Toch blijft mijn programma hangen en krijg ik nooit de hemelse 'yay!' op mijn scherm te zien