Dim temp(1) As Single
Private Sub Cmdsend_Click()
varbuffer = "S"
MSComm1.Output = varbuffer
Timer1.Enabled = True
End SubPrivate Sub Cmdquit_Click()
MSComm1.PortOpen = False
Unload Me
End SubPrivate Sub Form_Load()
MSComm1.Settings = "9600,n,8,1" '设置数据传输率和发送字符格式
MSComm1.CommPort = 5 '设置通讯端口
MSComm1.InputLen = 0 '设置或返回一次从接收缓冲区中读取字节数,0表示一次读取所有数据
MSComm1.InBufferSize = 512 '设置接收缓冲区512Byte
MSComm1.InBufferCount = 0
MSComm1.OutBufferSize = 512 '设置发送缓冲区512Byte
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
Inputsignal = MSComm1.Input
TextReceive.Text = Asc(Inputsignal)
Case Else
End Select
End SubPrivate Sub Text_Change()End SubPrivate Sub Timer1_Timer()
Outputsignal = Str(Textsend.Text)
temp(1) = CByte(Outputsignal)
varbuffer = temp
MSComm1.Output = varbuffer
Timer1.Enabled = False
End Sub
Private Sub Cmdsend_Click()
varbuffer = "S"
MSComm1.Output = varbuffer
Timer1.Enabled = True
End SubPrivate Sub Cmdquit_Click()
MSComm1.PortOpen = False
Unload Me
End SubPrivate Sub Form_Load()
MSComm1.Settings = "9600,n,8,1" '设置数据传输率和发送字符格式
MSComm1.CommPort = 5 '设置通讯端口
MSComm1.InputLen = 0 '设置或返回一次从接收缓冲区中读取字节数,0表示一次读取所有数据
MSComm1.InBufferSize = 512 '设置接收缓冲区512Byte
MSComm1.InBufferCount = 0
MSComm1.OutBufferSize = 512 '设置发送缓冲区512Byte
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
Inputsignal = MSComm1.Input
TextReceive.Text = Asc(Inputsignal)
Case Else
End Select
End SubPrivate Sub Text_Change()End SubPrivate Sub Timer1_Timer()
Outputsignal = Str(Textsend.Text)
temp(1) = CByte(Outputsignal)
varbuffer = temp
MSComm1.Output = varbuffer
Timer1.Enabled = False
End Sub
那个电脑现在有串口5啊??
改成用串口1试一下
现在电脑一般都只有一个串口,默认是COM1
Outputsignal = Str(Textsend.Text)
temp(1) = CByte(Outputsignal)三,很多变量都没有声明类型,那就算解决了类型不匹配问题,也有可能因为类型的原因造成最后工作的不正常.
建议"工具--->选项--->要求变量声明"勾上,强制对每一个所使用的变量都要进行确定的类型声明.
13是类型不匹配。。这里:你的inputsignal是什么类型?
MSCOMM貌似只能以二进制,或文本格式进行数据传输吧?
Inputsignal = MSComm1.Input
TextReceive.Text = Asc(Inputsignal)
同上:你的outputsignal,是什么类型呢?
你定义的temp(1)是single格式
但是接受时,cbyte函数是转换成byte类型。。
格式都不统一啊。
Outputsignal = Str(Textsend.Text)
temp(1) = CByte(Outputsignal)
varbuffer = temp
MSComm1.Output = varbuffer
Select Case MSComm1.CommEvent
Case comEvReceive
TextReceive.Text = MSComm1.Input
End Select
End SubPrivate Sub Timer1_Timer() MSComm1.Output = Textsend.Text
Timer1.Enabled = False
End Sub