Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <assert.h>
- #include <windows.h>
- #pragma warning(disable:4996)
- int main(int argc, char **argv){
- char a[128] = { 0 }, res = 0, uartbuffer[32] = { 0 }, *pos;
- int params[5] = { 0 }, rw;
- DCB comport = { 0 };
- HANDLE hcomm = CreateFileA("COM7", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
- res = GetCommState(hcomm, &comport);
- assert(res);
- res = BuildCommDCBA("COM7:baud=115200 parity=N data=8 stop=1 rts=off dtr=off", &comport);
- assert(res);
- res = SetCommState(hcomm, &comport);
- assert(res);
- printf("baud=%d bits=%d stopbit=%d parity=%d\n", comport.BaudRate, comport.ByteSize, comport.StopBits, comport.fParity);
- for(;;){
- fgets(a, 127, stdin);
- if(!strcmp(a, "q")){
- break;
- }
- else{
- if(pos = strstr(a, "voltctrl")){
- if(sscanf(pos + 8, "%d%d", params, params + 1) == 2){
- uartbuffer[0] = 0;
- uartbuffer[1] = (params[0] >= 0 && params[0] <= 7) ? params[0] : 0;
- uartbuffer[2] = params[1] & 0xff;
- uartbuffer[3] = '\r';
- uartbuffer[4] = '\n';
- res = WriteFile(hcomm, uartbuffer, 5, &rw, 0);
- assert(res);
- printf("sent %d\n", rw);
- }
- }
- else if(pos = strstr(a, "wtmult")){
- if(sscanf(pos + 6, "%d%d%d", params, params + 1, params + 2) == 3){
- uartbuffer[0] = 0x10;
- uartbuffer[1] = params[0] & 0xff;
- uartbuffer[2] = (params[1] >= 0 && params[1] <= 7) ? params[1] : 0;
- uartbuffer[3] = params[2] & 0xff;
- uartbuffer[4] = '\r';
- uartbuffer[5] = '\n';
- res = WriteFile(hcomm, uartbuffer, 6, &rw, 0);
- assert(res);
- printf("sent %d\n", rw);
- }
- }
- else if(pos = strstr(a, "multctrl")){
- if(sscanf(pos + 8, "%d", params) == 1){
- uartbuffer[0] = 0x11;
- uartbuffer[1] = params[0] & 0xff;
- uartbuffer[2] = 0;
- uartbuffer[3] = '\r';
- uartbuffer[4] = '\n';
- res = WriteFile(hcomm, uartbuffer, 5, &rw, 0);
- assert(res);
- printf("sent %d\n", rw);
- }
- }
- else if(pos = strstr(a, "handshake")){
- WriteFile(hcomm, " HI\r\n", 5, &rw, 0);
- res = ReadFile(hcomm, uartbuffer, 7, &rw, 0);
- assert(res);
- for(int i = 0; i < 7; i++){
- printf("%02x ", uartbuffer[i]);
- }
- putchar('\n');
- }
- }
- }
- CloseHandle(hcomm);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement