与C ++ COM端口相关,如何使用从COM端口接收的特定cmd触发操作

时间:2017-04-14 02:10:30

标签: c++ interface port

我正在创建一个用于项目测试目的的简单文件。代码的主要功能是通过虚拟COM端口发送和接收数据。' ack'应该触发程序发送数据,但我只能收到' ack ?????'。感谢任何帮助。

using namespace std;
int main(){
     HANDLE hcom;
         hcom = CreateFile("COM5",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING
                        ,FILE_ATTRIBUTE_NORMAL,NULL);
    if (hcom == INVALID_HANDLE_VALUE)
    {

        fprintf(stderr, "fail to open port\n");
        exit(0);
    }
    SetupComm(hcom,1024,1024);
    DCB dcb;
    GetCommState(hcom,&dcb);
    dcb.BaudRate = 9600;
    dcb.ByteSize = 8;
    dcb.Parity = 0;
    dcb.StopBits = 1;
    SetCommState(hcom,&dcb);
    char data[]={01, 02, 03, 04, 05, 06, 07, 08};//just something simple, trying to convert into hex then send to COM 
    char received[3];//trying to convert whatever received into char
    DWORD dwWrittenLen = 0;
    DWORD dwReadsize = 0;

    bool re = ReadFile(hcom,received,3,&dwReadsize,NULL);
    printf("%s", received);
   if(received == 'ack'){
        if(!WriteFile(hcom,data,1024,&dwWrittenLen,NULL))
        {
        fprintf(stderr, "fail!\n");
        }

        k++;

        printf("succeed!\n" ,k);
        Sleep(10*1000);  //send data every 10s
   }

    return 0;

}'

0 个答案:

没有答案