當前位置:編程學習大全網 - 編程軟體 - liunx下qt串口通訊怎麽辦,以前沒接觸過,現在要寫串口驅動不知怎麽搞,網上的資料表示不很理解

liunx下qt串口通訊怎麽辦,以前沒接觸過,現在要寫串口驅動不知怎麽搞,網上的資料表示不很理解

串口通信壹般為三步:打開串口,串口設置,向串口發送數據或者向串口接受數據:

void OpenComm()

{

hCom=CreateFile("COM3",GENERIC_READ|GENERIC_WRITE,0,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,

NULL);

}

void SetComm()

{

SetupComm(hCom,1024,1024);

DCB dcb;

dcb.BaudRate=115200;

dcb.fParity=NOPARITY;

dcb.ByteSize=8;

dcb.StopBits=ONESTOPBIT;

GetCommState(hCom,&dcb);

if(!GetCommState(hCom,&dcb)){

std::cerr<<"串口被占用"<<std::endl;

return;

}

if(!SetCommMask(hCom,EV_RXCHAR|EV_TXEMPTY)){

std::cerr<<"掩碼設置失敗"<<std::endl;

}

}

void SendMessageOut(const BYTE snd[],int len)

{

DWORD factdata=100;

DWORD res=0;

wOverLapped.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); //創建事件

BOOL tempflag = WriteFile(hCom,snd,len,&factdata,&wOverLapped);//在數據緩沖Ipbuffer不知道是否有問題

if(tempflag!=0)

{

std::cerr<<"等待信號"<<std::endl;

res=WaitForSingleObject(wOverLapped.hEvent,5000);

WriteFile(hCom,snd,len,&factdata,&wOverLapped);

}

if(res!=WAIT_OBJECT_0)

std::cout<<"數據發送失敗"<<std::endl;

}

這是向串口發送數據的,主要函數為WriteFile();讀取ReadFile(),具體用法 百度壹下

  • 上一篇:考程序員需要什麽條件
  • 下一篇:雅馬哈機器人通電時跳閘是怎麽回事?
  • copyright 2024編程學習大全網