版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guimotion/article/details/80067349
亲爱的朋友们,大家好!今天给大家带来最基础的功能,串口通讯。相信这个大家并不陌生。modbusRTU,Membus等等协议都是基于串口上搭建出来的软件通讯协议。希望本次博客给大家带来一点点收获,老鸟可以跳过本章节。。。
废话就不多说,今天就开始讲讲最基础的通讯功能,万丈高楼平地起嘛。
讲串口通讯之前,我们列举下相关指令:
1.
GET从数据缓冲流获取一个字符
实例如下:
//获取一个字符存放在临时变量中
DIM get_str AS INTEGER
GET #2,get_str
2.
PRINT按字符流发送数据
实例如下:
//发送一个字符串
PRINT #2,"This is Test:"
//发送一个字符
PRINT #2,CHR(48);
PRINT #2,CHR($30);
3.
ADDRESS串口站点地址
4.
SETCOM设置串口通讯参数
我们重点讲下setcom
实例如下:(1)设置本地站点2,波特率9600,8个数据位,1个停止位,偶校验,232硬件,自由口通讯
ADDRESS=2
SETCOM(9600,8,1,2,1,0)
(2)设置本地站点1,波特率9600,8个数据位,1个停止位,偶校验,485硬件,自由口通讯
ADDRESS=1
SETCOM(9600,8,1,2,2,0,0,3,0)
预备知识讲完了,那么接下来我们来看代码,看执行效果。
DIM get_str,data_num AS INTEGER
ADDRESS=1
'RS232
SETCOM(9600,8,1,2,1,0)
'RS485
SETCOM(9600,8,1,2,2,0,0,3,0)
WA(100)
WHILE TRUE
PRINT #2,"This is Test:"
PRINT #2,data_num;CHR(13);CHR(10);
WA(100)
IF KEY #2 THEN
WHILE KEY #2
GET #2,get_str
PRINT #2,CHR(get_str);
WEND
ENDIF
data_num=data_num+1
WEND
注意事项:发送端和接收端通讯波特率、停止位、校验位需要统一一致。
执行效果
发送和接收正常
亲爱的兄弟们,姐弟们,今天就到此结束了,谢谢大家阅读。。。