RS232串口进行通信怎样获取数据

wushuiyoushen 2013-12-01 05:50:35
我车间有个称重测长的设备和程序,是通过RS232串口进行通信的,设备硬件都是连接好的,我想在现有基础上模拟做一个能采集测量长度和重量的程序,是不是使用MSCom控件MSComm1.Input获取数据,会不会对原程序影响
Private Sub Timer1_Timer()
Dim buf$
Timer1.Enabled = False
buf = Trim(MSComm1.Input) '将缓冲区内的数据读入buf变量中
If Len(buf) = 0 Then '判断缓冲区内是否存在数据
TextReceive.Text = ""
Else
TextReceive.Text = buf
End If
End Sub
以上代码可以吗
我不需要对串口进行设置了吧
还有获取的数据是电压值吗,还要进行什么转换吗?我刚接触串口方面的知识,不太明白获取数据后怎样转换成长度或重量的原理,请高手或研究过这方面的大侠谈谈,谢谢
...全文
4501 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wushuiyoushen 2013-12-28
  • 打赏
  • 举报
回复
谢谢楼上的热心回答,不过我还是不懂,我觉得超级终端类似串口助手',一样的当愿程序打开是串口是打开的,一样无法使用',而且如果是要发送某命令才回传数据我怎么解决,对不起,我刚学串口通信很菜,望请教
wangyuzg 2013-12-25
  • 打赏
  • 举报
回复
看你5点钟就起床了,真是个勤快人…… 那技术问题应该不是问题。
wangyuzg 2013-12-25
  • 打赏
  • 举报
回复
引用 10 楼 wushuiyoushen 的回复:
在电脑上找到超级终端的,以前没用过,请教一下怎样看他发送过来的数据
———————————————————————————————————————————— 在 开始-程序-附件-通讯-超级终端(有些系统安装时未安装,请你手动安装),打开后根据提示一步一步设置(这个不用教吧,既然你是搞通讯的,这些设置应该不会是问题),把com口、波特率(因为你不知道该表的波特率,所以可以从1200开始一个一个的试)数据位(一般是8位)设置好,打开串口,看仪表给你发送过来的是什么样的数据,只要这些设置好了,它肯定要发送数据过来的。 最后你根据它发送到缓冲区数据的格式,比如&12345,而12345是你想要的,你就可以把&作为取数前的判断条件,只要查找发送过来的数据中有&,则从它之后开始取数,数几位…… 太啰嗦了……
wushuiyoushen 2013-12-25
  • 打赏
  • 举报
回复
引用 9 楼 wushuiyoushen 的回复:
[quote=引用 7 楼 wangyuzg 的回复:] [quote=引用 6 楼 wushuiyoushen 的回复:] [quote=引用 4 楼 wangyuzg 的回复:] 如果原程序打开的时候,你的程序再去打开com口时肯定会失败。
你说对了,想想还有什么办法吗?还有个问题,此设备是通过232串口连接的智能仪表设备,能显示重量,怎样才能知道通信协议,发送指令得到数据呢?我不知道通信协议[/quote] 那你要弄清楚该仪表是采用232通讯还是485通讯,如果是232的,你可以直接通过电脑自带的超级终端来看一下它发送数据的格式,你可以参考并自己在程序里取数,如果是485的话,肯定要该表的详细资料,因为485通讯的话是你要给它发送指令,然后仪表才返回相应的数据。 至于你说的该表的通讯协议,在菜单里可以查得到吧。[/quote] 请教了,万分谢谢[/quote] 在电脑上找到超级终端的,以前没用过,请教一下怎样看他发送过来的数据
wushuiyoushen 2013-12-25
  • 打赏
  • 举报
回复
引用 7 楼 wangyuzg 的回复:
[quote=引用 6 楼 wushuiyoushen 的回复:] [quote=引用 4 楼 wangyuzg 的回复:] 如果原程序打开的时候,你的程序再去打开com口时肯定会失败。
你说对了,想想还有什么办法吗?还有个问题,此设备是通过232串口连接的智能仪表设备,能显示重量,怎样才能知道通信协议,发送指令得到数据呢?我不知道通信协议[/quote] 那你要弄清楚该仪表是采用232通讯还是485通讯,如果是232的,你可以直接通过电脑自带的超级终端来看一下它发送数据的格式,你可以参考并自己在程序里取数,如果是485的话,肯定要该表的详细资料,因为485通讯的话是你要给它发送指令,然后仪表才返回相应的数据。 至于你说的该表的通讯协议,在菜单里可以查得到吧。[/quote] 请教了,万分谢谢
wushuiyoushen 2013-12-25
  • 打赏
  • 举报
回复
引用 7 楼 wangyuzg 的回复:
[quote=引用 6 楼 wushuiyoushen 的回复:] [quote=引用 4 楼 wangyuzg 的回复:] 如果原程序打开的时候,你的程序再去打开com口时肯定会失败。
你说对了,想想还有什么办法吗?还有个问题,此设备是通过232串口连接的智能仪表设备,能显示重量,怎样才能知道通信协议,发送指令得到数据呢?我不知道通信协议[/quote] 那你要弄清楚该仪表是采用232通讯还是485通讯,如果是232的,你可以直接通过电脑自带的超级终端来看一下它发送数据的格式,你可以参考并自己在程序里取数,如果是485的话,肯定要该表的详细资料,因为485通讯的话是你要给它发送指令,然后仪表才返回相应的数据。 至于你说的该表的通讯协议,在菜单里可以查得到吧。[/quote] 是232串口通信的,请说明白点,有点不懂,怎样用“电脑自带的超级终端来看一下它发送数据的格式,你可以参考并自己在程序里取数,”
wangyuzg 2013-12-20
  • 打赏
  • 举报
回复
引用 6 楼 wushuiyoushen 的回复:
[quote=引用 4 楼 wangyuzg 的回复:] 如果原程序打开的时候,你的程序再去打开com口时肯定会失败。
你说对了,想想还有什么办法吗?还有个问题,此设备是通过232串口连接的智能仪表设备,能显示重量,怎样才能知道通信协议,发送指令得到数据呢?我不知道通信协议[/quote] 那你要弄清楚该仪表是采用232通讯还是485通讯,如果是232的,你可以直接通过电脑自带的超级终端来看一下它发送数据的格式,你可以参考并自己在程序里取数,如果是485的话,肯定要该表的详细资料,因为485通讯的话是你要给它发送指令,然后仪表才返回相应的数据。 至于你说的该表的通讯协议,在菜单里可以查得到吧。
wushuiyoushen 2013-12-19
  • 打赏
  • 举报
回复
引用 4 楼 wangyuzg 的回复:
如果原程序打开的时候,你的程序再去打开com口时肯定会失败。
你说对了,想想还有什么办法吗?还有个问题,此设备是通过232串口连接的智能仪表设备,能显示重量,怎样才能知道通信协议,发送指令得到数据呢?我不知道通信协议
wangyuzg 2013-12-10
  • 打赏
  • 举报
回复
楼主问题解决了没有也不来吱个声。
wangyuzg 2013-12-08
  • 打赏
  • 举报
回复
如果原程序打开的时候,你的程序再去打开com口时肯定会失败。
wushuiyoushen 2013-12-02
  • 打赏
  • 举报
回复
如果是连接COM1串口,我能不能在源程序运行时COM1向pc返回数据时,编一个程序用MSComm1.Input进行获取
of123 2013-12-02
  • 打赏
  • 举报
回复
最好不使用 Timer 定时。MSComm 有自己的 OnComm 事件,可以在接收到数据时触发。

864

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧