您现在所在的是:

电脑编程

回帖:2个,阅读:3081 [上一页] [1] [下一页]
1922
周长锁
文章数:312
年度积分:53
历史总积分:1922
注册时间:2006/4/29
发站内信
08年优秀博客奖
发表于:2011/1/8 21:18:47
#0楼
上一篇帖子介绍了vb2005中serialport的基本用法,需要注意的是writeline是在发送字符串后加了个换行符(vblf),readline接收时遇到换行符接收才结束。isopen的用法只能判断用open方法打开的串口,其他程序已打开的串口是无法判断的,所以判断未使用的串口还要用try或on error的方法判断。
上位机和单片机通信用16进制比较多,下面是16进制通信的例子,数据发送用write,数据接收用readbyte。
图
imports system.io.ports         使用serialport所引用的命名空间
public class form1
   dim fx() as byte        待发送数据数组
   dim rc() as byte        接收数据数组
   private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
       if button1.text = 打开串口 then
           serialport1.portname = com1
           serialport1.open()                       串口打开与关闭
           button1.text = 关闭串口
           button2.enabled = true
           timer1.enabled = true
       else
           if serialport1.isopen then serialport1.close()
           button1.text = 打开串口
           timer1.enabled = false
           button2.enabled = false
       end if
   end sub
   待发送数据处理与发送
   private sub button2_click(byval sender as system.object, byval e as system.eventargs) handles button2.click
       dim i as integer
       dim n as integer
       dim cmd as string = textbox1.text
       n = len(cmd) \ 2
       redim fx(n)
       for i = 1 to n
           fx(i) = cbyte(&h & mid(cmd, 2 * i - 1, 2))
       next
       serialport1.write(fx, 1, n)     发送数组fx第1到n数据
   end sub
   数据定时接收与显示
   private sub timer1_tick(byval sender as system.object, byval e as system.eventargs) handles timer1.tick
       dim strrc as string
       dim i as integer
       dim n as integer
       n = serialport1.bytestoread     读缓冲区数据量,有数据则接收
       if n > 0 then
           redim rc(n)
           strrc =
           for i = 1 to n
               rc(i) = serialport1.readbyte
               strrc += cstr(hex(rc(i))) &   数据转为16进制显示
           next
           textbox2.text = strrc
       end if
   end sub
end class
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=132179&Name=zhouchs
欢迎光临我的BLOG
8164
shotgun
文章数:1453
年度积分:50
历史总积分:8164
注册时间:2007/9/19
发站内信
发表于:2011/1/12 14:06:08
#1楼
fx(i) = cbyte(&h & mid(cmd, 2 * i - 1, 2))
楼主这句能编绎通过么?
我没去测试,感觉告诉我,你这句有问题
1922
周长锁
文章数:312
年度积分:53
历史总积分:1922
注册时间:2006/4/29
发站内信
08年优秀博客奖
发表于:2011/1/13 22:36:14
#2楼
到blog里去看是:fx(i) = CByte("&H" & Mid(Cmd, 2 * i - 1, 2))
,blog自动转到这里后丢了好多符号。
欢迎光临我的BLOG

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002