Advertisement
wojiaocbj

Untitled

Jun 27th, 2022
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <assert.h>
  5. #include <windows.h>
  6. #pragma warning(disable:4996)
  7. int main(int argc, char **argv){
  8.     char a[128] = { 0 }, res = 0, uartbuffer[32] = { 0 }, *pos;
  9.     int params[5] = { 0 }, rw;
  10.     DCB comport = { 0 };
  11.     HANDLE hcomm = CreateFileA("COM7", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
  12.     res = GetCommState(hcomm, &comport);
  13.     assert(res);
  14.     res = BuildCommDCBA("COM7:baud=115200 parity=N data=8 stop=1 rts=off dtr=off", &comport);
  15.     assert(res);
  16.     res = SetCommState(hcomm, &comport);
  17.     assert(res);
  18.     printf("baud=%d bits=%d stopbit=%d parity=%d\n", comport.BaudRate, comport.ByteSize, comport.StopBits, comport.fParity);
  19.     for(;;){
  20.         fgets(a, 127, stdin);
  21.         if(!strcmp(a, "q")){
  22.             break;
  23.         }
  24.         else{
  25.             if(pos = strstr(a, "voltctrl")){
  26.                 if(sscanf(pos + 8, "%d%d", params, params + 1) == 2){
  27.                     uartbuffer[0] = 0;
  28.                     uartbuffer[1] = (params[0] >= 0 && params[0] <= 7) ? params[0] : 0;
  29.                     uartbuffer[2] = params[1] & 0xff;
  30.                     uartbuffer[3] = '\r';
  31.                     uartbuffer[4] = '\n';
  32.                     res = WriteFile(hcomm, uartbuffer, 5, &rw, 0);
  33.                     assert(res);
  34.                     printf("sent %d\n", rw);
  35.                 }
  36.                
  37.             }
  38.             else if(pos = strstr(a, "wtmult")){
  39.                 if(sscanf(pos + 6, "%d%d%d", params, params + 1, params + 2) == 3){
  40.                     uartbuffer[0] = 0x10;
  41.                     uartbuffer[1] = params[0] & 0xff;
  42.                     uartbuffer[2] = (params[1] >= 0 && params[1] <= 7) ? params[1] : 0;
  43.                     uartbuffer[3] = params[2] & 0xff;
  44.                     uartbuffer[4] = '\r';
  45.                     uartbuffer[5] = '\n';
  46.                     res = WriteFile(hcomm, uartbuffer, 6, &rw, 0);
  47.                     assert(res);
  48.                     printf("sent %d\n", rw);
  49.                 }
  50.                
  51.             }
  52.             else if(pos = strstr(a, "multctrl")){
  53.                 if(sscanf(pos + 8, "%d", params) == 1){
  54.                     uartbuffer[0] = 0x11;
  55.                     uartbuffer[1] = params[0] & 0xff;
  56.                     uartbuffer[2] = 0;
  57.                     uartbuffer[3] = '\r';
  58.                     uartbuffer[4] = '\n';
  59.                     res = WriteFile(hcomm, uartbuffer, 5, &rw, 0);
  60.                     assert(res);
  61.                     printf("sent %d\n", rw);
  62.                 }
  63.                
  64.             }
  65.             else if(pos = strstr(a, "handshake")){
  66.                 WriteFile(hcomm, " HI\r\n", 5, &rw, 0);
  67.                 res = ReadFile(hcomm, uartbuffer, 7, &rw, 0);
  68.                 assert(res);
  69.                 for(int i = 0; i < 7; i++){
  70.                     printf("%02x ", uartbuffer[i]);
  71.                 }
  72.                 putchar('\n');
  73.             }
  74.         }
  75.     }
  76.     CloseHandle(hcomm);
  77.     system("pause");
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement