用串口调试助手可以接受到单片机返回的数据,为什么用VB接受不到?
无论给单片机发送任何数据,单片机接收到后,都会把P1口的值返回去,P1口的PIN脚电平发生变化时,串口调试助手接受的数据(十六进制)也跟着发生变化,说明串口调试助手接受的...
无论给单片机发送任何数据,单片机接收到后,都会把P1口的值返回去,P1口的PIN脚电平发生变化时,串口调试助手接受的数据(十六进制)也跟着发生变化,说明串口调试助手接受的数据是好的。为什么VB无论是文本还是二进制形式都接收不到任何数据或字符?
定义两个字节型变量i,l;
定义一个数组unchar code table[ ]="0123456789ABCDEF"
然后单片机返回数据时,以字符中形式返回。
i=P2/16; //除法运算,求整
l=P2%16; //求余运算
SBUF=table[i];
SBUF=table[l];
问题解决!
大概逻辑差不多就这样。 展开
定义两个字节型变量i,l;
定义一个数组unchar code table[ ]="0123456789ABCDEF"
然后单片机返回数据时,以字符中形式返回。
i=P2/16; //除法运算,求整
l=P2%16; //求余运算
SBUF=table[i];
SBUF=table[l];
问题解决!
大概逻辑差不多就这样。 展开
展开全部
1/。你input进来的数据有没有dbug.print 一下,看看是什么值?
2、作项目遇到同一问题,后来在发送过程尾部加 doevents 函数解决。oncomm事件在系统执行其他过程时虽然被触发,但代码不会运行,直到其他过程运行结束,所以其他过程发送查询指令后,应当马上挂起,将控制权交给系统,以使oncomm运行代码,否则其他过程结束,oncomm事件也结束了,不知道c有没有doevents,供参考。
3、或者你直接把接收文本 写到 click 事件里,或者你需要 自动连续 获取 用个timer控件也行。
2、作项目遇到同一问题,后来在发送过程尾部加 doevents 函数解决。oncomm事件在系统执行其他过程时虽然被触发,但代码不会运行,直到其他过程运行结束,所以其他过程发送查询指令后,应当马上挂起,将控制权交给系统,以使oncomm运行代码,否则其他过程结束,oncomm事件也结束了,不知道c有没有doevents,供参考。
3、或者你直接把接收文本 写到 click 事件里,或者你需要 自动连续 获取 用个timer控件也行。
追问
如果单片机返回的是一个字符串,VB用文本的形式是可以接受到的。我是在这个基础上改的,让单片机返回一个数值(P1口的数值),用VB来接受,可是不成功。
VB逐语句调试运行的时候发现MSCOMM1.INPUT返回的字符是空的。
追答
1、请查看 单片机发过来的报文是否有问题,要在PLC里调试
2、MSCOMM1.INPUT接收的问题,oncomm事件的问题,上面也说过
建议你单独写个函数,或者放到别的事件里 来执行MSCOMM1.INPUT 在试试
另外你接收MSCOMM1.INPUT过来的数据 可以 赋值 并且截取你要的内容部分。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询