重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、检查串口是否正确,比如COM1,COM2,COM3等;
成都创新互联公司是一家专业提供头屯河企业网站建设,专注与网站设计制作、成都网站建设、H5技术、小程序制作等业务。10年已为头屯河众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
2、检查波特率是否正确,比如9600,115200等;
3、检查数据位、停止位、校验位是否正确,比如8位数据位、1位停止位、无校验位等;
4、检查串口线是否接好;
5、检查串口是否被其他程序占用,可以使用串口调试助手查看;
6、检查串口驱动是否安装正确,可以在设备管理器中查看;
7、检查程序代码是否正确,可以使用串口调试助手查看。
你可以预先约定一个截止附,读取的字节统统放到缓存区里,直到读到截止附再处理、显示。
vb.net的话
For
Each
sp
As
String
In
My.Computer.Ports.SerialPortNames
cbxport.Items.Add(sp)
Next
vb6.0的话要调用API查看串口相关信息存在的注册表。
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
通过读注册表的方法获得串口数量,当然也可以获得串口号了。
Option
Explicit
Private
Declare
Function
RegOpenKey
Lib
"advapi32.dll
"
Alias
"RegOpenKeyA
"
(ByVal
hKey
As
Long,
ByVal
lpSubKey
As
String,
phkResult
As
Long)
As
Long
Private
Declare
Function
RegQueryInfoKey
Lib
"advapi32.dll
"
Alias
"RegQueryInfoKeyA
"
(ByVal
hKey
As
Long,
ByVal
lpClass
As
String,
lpcbClass
As
Long,
ByVal
lpReserved
As
Long,
lpcSubKeys
As
Long,
lpcbMaxSubKeyLen
As
Long,
lpcbMaxClassLen
As
Long,
lpcValues
As
Long,
lpcbMaxValueNameLen
As
Long,
lpcbMaxValueLen
As
Long,
lpcbSecurityDescriptor
As
Long,
lpftLastWriteTime
As
Long)
As
Long
Private
Const
HKEY_LOCAL_MACHINE
=
H80000002
'
获得当前系统的
COM
口的数量
Function
GetCOMCount()
As
Integer
Dim
ret
As
Long,
cntCOM
As
Long
RegOpenKey
HKEY_LOCAL_MACHINE,
"HARDWARE\DEVICEMAP\SERIALCOMM
",
ret
RegQueryInfoKey
ret,
"
",
0,
0,
0,
0,
0,
cntCOM,
0,
0,
0,
GetCOMCount
=
cntCOM
End
Function
Private
Sub
Command1_Click()
MsgBox
"您的机器有
"
GetCOMCount
"
个串口。
",
vbOKOnly,
"串口数量
"
End
Sub
这是典型的VB串口通信
你可以采用Mscomm控件实现串口通信时,首先添加一Mscomm控件到窗体中,通过菜单项“工程(P)→部件(O)”进入选择窗口,在控件页中选取“Microsoft Comm Control 6.0” ,此时工具窗口中出现Mscomm图标,即可被使用。
需要注意的几点是:
1.用mscomm控件进行通信,其波特率最高只能设为115200
2.利用MSCOMM控件可以发送和接收任何文件的类型。
3.接收文本文件和二进制文件有一定的区别,接收二进制文件时用scomm1.Input读入的变量需用Variant类型的变量,而文本文件可以用字符型变量,另外InputMode属性应设置相应的文本方式或二进制方式
4.接收文本无大小限制。
5.当连续存数据时记录号是自动加的,但当文件关闭后再次打开时,默认的记录号为1,存储文件不完整的原因可能在此。接收到文件头识别字符时打开文件,接收中途不要关闭文件,直到接收到文件结束符(Mscomm1.EOFEnable事件发生)才能关闭文件。
我手头有一个完整的VB串口通信源码,对你的问题很有帮助
若你需要,发邮件至donook@qq.com
我会尽快发给你
如果满意,加点分哦,资料都来之不易的呵呵