|
10黑币
最近想搞个PC与单片机用串口通讯的程序,单片机部分通讯搞好了(作为初学者,当然是篡改老师的,请别见怪!),用“串口助手”收发字符串正常。但是用易语言写的PC端,发送正常,单片机的LCD显示正常,可是回传到PC端显示的就不对了,字符串顺序颠三倒四的,每次回显次序也不同,还自动加了换行符。 这个PC端,是我用易语言附带的串口通讯例程改的,原来的例程似乎就有问题,由于我用的是USB转串口的340线,显示COM3,但是原例程中只有COM1、COM2两个端口,我曾加了COM3端口选项,也是收不到信号。
现在把我改的串口通讯源码上传,希望能得到各位大仙的帮助、修改,或者能解释一下接收显示顺序混乱的原因。谢谢各位了!
下面是易语言收到信号后的代码文本,因为可能这里可能没有多少用易语言的朋友。(全部文件在附件里)
.版本 2
.子程序 _串口_收发_收到信号
.参数 信号类型, 整数型
.局部变量 循环容器, 整数型
信号次数 = 信号次数 + 1
.如果真 (信号次数 < 36)
信号时间 [信号次数] = 取启动时间 () - 起始时间
.如果真结束
.计次循环首 (24, 循环容器)
.如果真 (信号顺序 [循环容器] = 0)
信号顺序 [循环容器] = 信号类型
跳出循环 ()
.如果真结束
.计次循环尾 ()
.子程序 _串口_收发_数据到达
.参数 数据字节值, 整数型
.局部变量 循环容器, 整数型
处理事件 ()
数据次数 = 数据次数 + 1
.' 如果真 (数据次数 ≤ 4)
' 数据时间 [数据次数] = 取启动时间 () - 起始时间
.如果真结束
.计次循环首 (18, 循环容器)
.如果真 (信号顺序 [循环容器] = 0)
信号顺序 [循环容器] = 10
跳出循环 ()
.如果真结束
.计次循环尾 ()
编辑框_连续接收.加入文本 (字符 (数据字节值))
编辑框_连续接收.刷新显示 ()
.如果真 (串口_收发.信号操作 (1, #DTR信号) = 假)
信息框 (“操作失败”, 0, )
.如果真结束
数据次数 = 0
处理事件 ()
|
-
-
1602串口.zip
38.46 KB, 下载次数: 10, 下载积分: 黑币 -5
改自本论坛的串口通讯程序
-
-
串口实验.zip
3.45 KB, 下载次数: 7, 下载积分: 黑币 -5
易语言的上位机部分
|