【版主进】100分给你了
【版主进】100分给您了
Dear 版主:
哥们我在调试一个Philips的点灯板(输入380V, DC;输出2300V,AC)通过串口进行控制。
我一直使用Serial Port控件,但是我这几天贼郁闷。问题如下:
这个板子你通过串口发命令给它的时候,它会通过串口返回值。
比如发送70 返回70
发送F0 返回 F0
发送F1 返回F1
等等等
但是我现在遇到的问题是:
我放了两个按钮,一个按钮发送70,一个按钮发F0;理论上我发70的时候我会收到70,我发F0的时候会收到F0;但是现在是这样子的:
第一次点70按钮,没任何返回值;第二次点 接收到70
然后点F0,结果收到70,也就是上次的数据,必须再点一次才能收到F0
这个怎么回事呢??
代码:
\\\\\\\\\ 70必须先发送\\\\\\\\\\\
Dear 版主:
哥们我在调试一个Philips的点灯板(输入380V, DC;输出2300V,AC)通过串口进行控制。
我一直使用Serial Port控件,但是我这几天贼郁闷。问题如下:
这个板子你通过串口发命令给它的时候,它会通过串口返回值。
比如发送70 返回70
发送F0 返回 F0
发送F1 返回F1
等等等
但是我现在遇到的问题是:
我放了两个按钮,一个按钮发送70,一个按钮发F0;理论上我发70的时候我会收到70,我发F0的时候会收到F0;但是现在是这样子的:
第一次点70按钮,没任何返回值;第二次点 接收到70
然后点F0,结果收到70,也就是上次的数据,必须再点一次才能收到F0
这个怎么回事呢??
代码:
\\\\\\\\\ 70必须先发送\\\\\\\\\\\
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPortforLampDriver.DiscardOutBuffer()
MessageBox.Show(SendCMDtoDriver("70"))
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPortforLampDriver.DiscardOutBuffer()
MessageBox.Show(SendCMDtoDriver("f0"))
End Sub
Public Function SendCMDtoDriver(ByVal strCMDSend As String)
Dim bytHex() As Byte
Dim indata As String
Dim byteToRead As Int16 = frmMain.SerialPortforLampDriver.BytesToRead
Dim ch(byteToRead) As Byte
Dim bytesRead As Int16 = 0
ReDim bytHex((Len(strCMDSend) \ 2) - 1)
Dim i As Integer
indata = ""
For i = 1 To Len(strCMDSend) Step 2
bytHex((i - 1) / 2) = Val("&H" & Mid(strCMDSend, i, 2))
Next
frmMain.SerialPortforLampDriver.Write(bytHex, 0, bytHex.Length)
frmMain.SerialPortforLampDriver.DiscardOutBuffer()
Sleep(200)
bytesRead = frmMain.SerialPortforLampDriver.Read(ch, 0, byteToRead)