大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
关于串口通讯的问题:
成都创新互联公司是一家专业提供铁岭县企业网站建设,专注与成都网站建设、成都网站制作、成都h5网站建设、小程序制作等业务。10年已为铁岭县众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
很明显,你还不知道(不会、不习惯)使用事件驱动的方式接收数据。
建议你仔细看看串口组件(无论VB6还是VB.net)的OnComm事件,你的问题很容易解决。
关于以太网通讯:
在TCP通讯中端口确实可以重用,你百度一下“TCP端口重用”能查到很多示例。
但绝大多数情况下不推荐端口重用,而应该采取服务器端建立连接池的方法。
或者,干脆不用TCP,用UDP解决也可以。
不是很明白你的题意
strHex = strHex + [String].Format("{0:X2} "
这里的意思是把每个字节数据转换成了十六进制,每个字节占两个字符
如果你串口收到的4个字节数据:43,27,56,200
那么你的结果是:2B1B38C8
即receivebytes.Text="2B1B38C8"
不足两位的补0
如果你串口收到的4个字节数据:3,27,56,200
那么你的结果是:031B38C8
即receivebytes.Text="031B38C8"
要把某个数字或者一段文字通过串行接口发送出去是一个很复杂的事。
要在铜线上严格按照通讯协议,以微秒级别的间隔发送高低电平是软件系统难以做到的。
所以,人们在串行接口芯片中预留了一些存储空间作为缓冲区。软件系统只负责将要发送的内容放进缓冲区,硬件系统只要发现缓冲区中有数据,就按照时钟晶振提供的精确时间间隔将数据转换为高低电平送到铜线上。
后来,由于硬件缓冲区很小(一般只有8个或16个字节),人们又通过软件方式在硬件缓冲区的上层再加一层软件缓冲区,其大小可以扩展至1024字节,甚至更高。这个就是MSComm控件里面的缓冲区了。
当你要发送一串数据时(比如200个),你可以直接送到MSComm里面,后面的操作全都不用管了。而实际上,MSComm会从其中按次序将16个字节送入硬件缓冲区,等硬件系统将数据发走后,再送16个…… 如此循环,直至全部发送完毕。接收缓冲区的作用与之类似。
上面的代码看不出问题,如果初始化串口控件时已经注册了AxMSComm1_OnComm,有数据接收应该能触发,至于为什么没有触发,要看看你的接收方是否已经收到你的发出指令,是否已经有响应数据回发。
建议分开调试,用一个通用的串口助手,如格西烽火串口助手之类的,分别调试你的上位机和下位机。格西烽火串口助手能轻松的定制如你上面的发送数据。
你可以等全部获取后 用mid函数去截取字符串 再赋值
dim a()
redim a(len(s)\4))
for i = 1 to len(s) step 4
a(j)=mid(s,i,4)
j=j+1
next