协议rs485协议,串口通讯(转发)
題目是用VC++讓上位機和下位機進行通信.
??????? 接在電腦上的rs232口,使用了232和485的轉換器,發送相應的數據格式,然后上位機接受相應的格式。
??????? 原代碼如下:
?????? // TODO: Add your control notification handler code here
?char buff[200];
?CString str;
?GetDlgItem(IDC_EDI_BUF) -> GetWindowText(str);
?sprintf(buff,"%s",(LPCSTR)str);
?//MessageBox(buff);
?//然后打開串口,開始通信
?HANDLE hCom;??//createFile函數返回的句柄
?//打開的是端口一
?hCom = CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,
??0, NULL,OPEN_EXISTING, 0, NULL);
?if(hCom == NULL)
?{
??MessageBox("打開端口一時出現了錯誤");
?}
?//設置讀寫緩沖區的緩沖大小
?//改變端口的設備控制塊
?/*DCB dcb;
?GetCommState(hCom,&dcb);
?dcb.BaudRate = CBR_9600;
?dcb.ByteSize=8;//數據位8位
?dcb.Parity = NOPARITY;?//有校驗
?
?dcb.StopBits=ONESTOPBIT; //一個停止位
?if(false==SetCommState(hCom,&dcb))
?{
??MessageBox("配置端口時出現了錯誤");
?}*/
?DCB dcb;
?GetCommState(hCom,&dcb);
?dcb.BaudRate = CBR_9600;
?dcb.ByteSize = 8;
?dcb.Parity = NOPARITY;
?dcb.StopBits = ONESTOPBIT;
?
?dcb.fBinary = TRUE;
?dcb.fParity = TRUE;
?dcb.fOutxDsrFlow = false;
?dcb.fDtrControl = DTR_CONTROL_DISABLE;
?dcb.fOutxCtsFlow = false;
?
?//#ifdef LPR_DOHERELARGE
?// dcb.fRtsControl = RTS_CONTROL_ENABLE;
?//#else
?dcb.fRtsControl = RTS_CONTROL_DISABLE;
?//#endif
?
/*?dcb.fInX = false;
?dcb.fOutX = false;
?dcb.XonChar = ASCII_XON;
?dcb.XoffChar = ASCII_XOFF;
?dcb.XonLim = 100;
?dcb.XoffLim = 100;*/
?if(false==SetCommState(hCom,&dcb))
?{
??MessageBox("配置端口時出現了錯誤");
?}
?
?//設置讀寫操作,將緩沖里面的數據寫入到串口里面
?BOOL isWrite = false;
?DWORD length = 100;
?COMSTAT ComStat;
?DWORD dwErrorFlags;
?ClearCommError(hCom,&dwErrorFlags,&ComStat);
?isWrite = WriteFile(hCom,buff,length,&length,NULL);
?
?if(isWrite == false)
?{
??MessageBox("寫入數據時出現了錯誤");
??
?}
?//寫完數據然后從緩沖里面讀取數據
?//過一段時間才讀取緩沖里面的數據
?::Sleep(100);
?//讀取緩沖里面的數據
?BOOL isRead = false;
?char readbuf[100];
?DWORD?? bReadStatus;
?
?memset(readbuf,0,sizeof(readbuf));
?isRead = ::ReadFile(hCom,readbuf,100,&bReadStatus,NULL);
?//MessageBox(readbuf);
?GetDlgItem(IDC_RECV_BUFF) -> SetWindowText(readbuf);
?CloseHandle(hCom);
總結
以上是生活随笔為你收集整理的协议rs485协议,串口通讯(转发)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDC及EDID内容简介
- 下一篇: 【015】基于51单片机的LCD1602