当前位置:首页 > 工业控制 > 电子设计自动化
[导读]上位机和下位机通信的问题,使用的协议rs485协议. 题目是用VC++让上位机和下位机进行通信. 接在电脑上的rs232口,使用了232和485的转换器,发送相应的数据格式,然后上位机接受相应的格式。 原代码如下: // TODO: Ad

上位机和下位机通信的问题,使用的协议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);

这样就完成了一次通信。还有从下位机发送来的报文解析部分没有给出。那部分是纯的软件部分。和机器无关。



来源:SKT5次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上个月,爱立信刚刚传出“对中国区业务进行战略调整,研发岗大面积裁员”的消息。这几天,就有员工确认,爱立信“核心网”成为了此次裁员的“重灾区”。

关键字: 爱立信 通信

设计工程师为了解决ISI问题,常常需要在链路损耗和均衡技术之间做出综合考虑。泰克的SDLA软件不仅可以模拟发送端的Tx EQ和接收端的Rx EQ,还能模拟传输链路的不同损耗。

关键字: 通信 示波器 测试测量

5G网络相较于4G网络,具有更高的数据传输速率,能够支持更高的峰值速率,理论上峰值传输速率可以达到10Gbit/s,这比4G网络快了大约10到100倍。

关键字: 5G 通信 4G网络

泰克实时示波器支持TekExpressLVDS自动测量软件,涵盖LVDS时钟和数据的30多个测量项目,一键完成一致性测量。

关键字: 通信 示波器 测试测量

2024年2月26日,国际通信行业盛会MWC 24于西班牙巴塞罗那召开,全球通信及其相关供应链的顶尖企业荟聚一堂,展示移动通信领域的前沿研究成果,与国际行业同仁展开深入技术交流。三安集成作为射频前端整合解决方案服务提供商...

关键字: 三安集成 射频 通信

在意大利媒体对沃达丰的并购交易提出多种猜测之后,该公司2月28日发布声明称,正在就将沃达丰意大利公司(Vodafone Italy)出售给瑞士电信进行独家谈判,但尚未达成有约束力的协议。

关键字: 沃达丰 瑞士电信 通信 宽带

即将于2024年6月竣工交付的华为上海研发基地(青浦),不仅是上海市重点工程,也是长三角一体化示范区西岑科创中心的亮点项目。

关键字: 华为 通信 芯片

全球4G和5G的部署速度比商业服务的推进速度更快,6G预计到2030年也会到来,电信运营商如何以正确姿势迎接未来?

关键字: AI 通信 5G 6G

近日,华为又新增了多条专利信息,其中一项关于人体通信的“黑科技”最引人注目。

关键字: 华为 通信

近日,华为接连曝出两大重磅消息:一个事关智能汽车,另一个事关卫星通信。

关键字: 华为 通信 汽车电子
关闭
关闭