Private Sub Send_Click() Dim s As Integer s = Text1.Text comm.Output = "s" delay Redata$ = comm.Input End SubPrivate Sub Send_group_Click() Dim i As Integer Dim s As Integer For i = 1 To 30 Step 1 s = s + i Next i comm.Output = "s" delay Redata$ = comm.Input End Sub这个事COM端口向FPGA发送命令的代码,程序是我按意思写的,应该是不正确的。COM端口OUTPUT属性是不能直接发送十进制数据的,好像应该先转换成二进制发送字符数据,这个转换该怎么写?第二个问题,就是DELAY的延时程序,这个程序该怎么调用?第三个问题是,发送出去命令,接收的程序代码应该怎么写,像上面的Redata$ = comm.Input这个事我看了网上资料搞的,应该是错的吧! 问题太多了,对于我这个新手真的很麻烦,希望大家帮助,谢谢!
第一个问题,按Byte(字节)流发送2进制数据。 第二个问题,用Timer控件控制发送间隔。 Option Explicit Dim bytSj(0) As Byte Dim i As Integer Private Sub Command1_Click() Timer1.Enabled = True End SubPrivate Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True Timer1.Enabled = False Timer1.Interval = 100 End SubPrivate Sub Timer1_Timer() i = i + 1 If i = 1 Then bytSj(0) = &H80 MSComm1.Output = bytSj ElseIf i = 2 Then bytSj(0) = &H88 MSComm1.Output = bytSj ElseIf i >= 3 Then bytSj(0) = &H8 MSComm1.Output = bytSj i = i - 3 Timer1.Enabled = False End If End Sub
Dim s As Integer
s = Text1.Text
comm.Output = "s"
delay
Redata$ = comm.Input
End SubPrivate Sub Send_group_Click()
Dim i As Integer
Dim s As Integer
For i = 1 To 30 Step 1
s = s + i
Next i
comm.Output = "s"
delay
Redata$ = comm.Input
End Sub这个事COM端口向FPGA发送命令的代码,程序是我按意思写的,应该是不正确的。COM端口OUTPUT属性是不能直接发送十进制数据的,好像应该先转换成二进制发送字符数据,这个转换该怎么写?第二个问题,就是DELAY的延时程序,这个程序该怎么调用?第三个问题是,发送出去命令,接收的程序代码应该怎么写,像上面的Redata$ = comm.Input这个事我看了网上资料搞的,应该是错的吧! 问题太多了,对于我这个新手真的很麻烦,希望大家帮助,谢谢!
第二个问题,用Timer控件控制发送间隔。
Option Explicit
Dim bytSj(0) As Byte
Dim i As Integer
Private Sub Command1_Click()
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
Timer1.Enabled = False
Timer1.Interval = 100
End SubPrivate Sub Timer1_Timer()
i = i + 1
If i = 1 Then
bytSj(0) = &H80
MSComm1.Output = bytSj
ElseIf i = 2 Then
bytSj(0) = &H88
MSComm1.Output = bytSj
ElseIf i >= 3 Then
bytSj(0) = &H8
MSComm1.Output = bytSj
i = i - 3
Timer1.Enabled = False
End If
End Sub
这些是什么意思不呢
&H88
&H8
VB中16进制数的表示法
&H80即10进制128
&H88即10进制136
&H8 即10进制8
你须先查找FUSION系列FPGA的通信协议资料!
具体的通信协议内容是啥?总不见得别人给你写协议,写数据约定.
我想FPGA他本身应该没有什么通信协议,这个通信协议应该就是我们用的COM端口的通信协议。硬件那边30个通道是直接用十进制数1到30表示的,我现在的问题是我这边怎么把通道的命令发送到FPGA那边与他那边相对应,以便FPGA响应后将相应的通道数据发送到VB显示界面上。VB串口通信用MSComm控件,问题是该控件发送和接受数据是以什么格式的,就是说怎么样将数据发送过去和接受回来。
实际上,Actel Fusion 与 PC 的通讯协议应该是通过烧入到 FPGA 中的逻辑确定的。片内逻辑接收到 PC 的指令,从指定的通道取 A/D 转换数据,然后发送给 PC。所以最简单的协议就是 PC 发送 1 - 30 (&H01 - &H1E) 到 FPGA 指定通道。指令 0 可以用作测试命令或其他。在烧入正确综合后的硬件逻辑之前,你给 FPGA 发什么都没有用。