我现在在做一个数据采集的软件,里面需要一个脉冲源控制程序(涉及串口通信)。别人之前已经帮我用vb编好了这个脉冲源控制程序,但我这个软件是用vc编的,而且听说用vc编这个脉冲控制程序挺累的。所以就想到直接把现有的程序弄到我的软件里。希望看到的效果是,在主菜单里点击“脉冲源”选项,就弹出脉冲控制界面。可惜这里不能上传图像,其实就是有几个combo选择,然后点确定发送。
    以下是这个程序的vb代码:
    Private Sub Combo1_Click()
 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False      '如果串口打开,则关上串口
   If Combo1.ListIndex >= 0 And Combo1.ListIndex <= 15 Then    
      MSComm1.CommPort = Combo1.ListIndex + 1                  
   
  Else
      MsgBox "指定通信端口时发生错误!"
   Exit Sub
   End If
MSComm1.Settings = "9600,n,8,1"               '设置参数 : 波特率 9600, 无校验 , 数据位 8, 停止位 1
MSComm1.InputMode = comInputModeBinary        ' 接收数据为 2 进制
MSComm1.PortOpen = True                       '打开串口End SubPrivate Sub Combo2_Click()  If Combo2.Text = "内部" Then
  Combo3.Enabled = True
  ElseIf Combo2.Text = "外部" Then
  Combo3.Enabled = False
  End If
  
End SubPrivate Sub Combo4_click()If Combo4.Text = "实验" Or Combo4.Text = "退出" Then
   Text1.Enabled = True
Else
   Text1.Enabled = False
End IfEnd SubPrivate Sub Command1_Click()       '类似&HF3这样的都不懂
   Const a = &HF3                  
   Dim b1, i, check As Integer
   Dim num As Long
   Dim a1, a2 As Integer
   Dim out(5) As Byte            
   
   out(0) = &HFF                  
   out(5) = &HAA                  
   
      b1 = a And &H10             
      
   If Combo2.Text = "内部" Then
      b1 = a And &H7F
   ElseIf Combo2.Text = "外部" Then
      b1 = a And &H8F
   End If
   
   If Combo3.Text = "1Hz" Then
     b1 = b1 And &H9F
   ElseIf Combo3.Text = "2Hz" Then
     b1 = b1 And &HAF
   ElseIf Combo3.Text = "3Hz" Then
     b1 = b1 And &HBF
   ElseIf Combo3.Text = "4Hz" Then
     b1 = b1 And &HCF
   ElseIf Combo3.Text = "5Hz" Then
     b1 = b1 And &HDF
   ElseIf Combo3.Text = "10Hz" Then
   
   End If   
   If Combo4.Text = "待机" Then
      b1 = b1 And &HFC
      num = 0
   ElseIf Combo4.Text = "调节能量" Then
      b1 = b1 And &HFD
      num = 0
   ElseIf Combo4.Text = "实验" Then
      b1 = b1 And &HFE
      num = Val(Text1.Text)                 '转换字符串,返回输入的脉冲个数
       
      If Val(Text1.Text) >= 0 And Val(Text1.Text) < 65535 Then   '脉冲个数小于65535才可以激发
      Command1.Enabled = True
      End If   ElseIf Combo4.Text = "退出" Then
      
      num = Val(Text1.Text)
      
        
      If Val(Text1.Text) >= 0 And Val(Text1.Text) < 65535 Then
      Command1.Enabled = True
      End If
   End If
   
  
   out(1) = b1                         
   
   a1 = Int(num / 256)                 
   out(2) = a1                         '发生送脉冲个数   Debug.Print a1                      '错误提示?
   a2 = num - a1 * 256                 '取num的小数部分
   out(3) = a2
   Debug.Print a2                       '错误提示?
   
   check = 0
   For i = 1 To 3
       check = check Xor out(i)         
   Next i
   out(4) = check                        
   
   MSComm1.OutBufferCount = 0           
   MSComm1.Output = out    
End SubPrivate Sub Form_Load()MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = TrueCombo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.AddItem "COM3"
Combo1.AddItem "COM4"
Combo1.AddItem "COM5"
Combo1.AddItem "COM6"
Combo1.AddItem "COM7"
Combo1.AddItem "COM8"
Combo1.AddItem "COM9"
Combo1.Text = "COM1"Combo2.AddItem "内部"
Combo2.AddItem "外部"
Combo2.Text = "内部"Combo3.AddItem "1Hz"
Combo3.AddItem "2Hz"
Combo3.AddItem "3Hz"
Combo3.AddItem "4Hz"
Combo3.AddItem "5Hz"
Combo3.AddItem "10Hz"
Combo3.Text = "1Hz"Combo4.AddItem "待机"
Combo4.AddItem "调节能量"
Combo4.AddItem "实验"
Combo4.AddItem "退出"
Combo4.Text = "待机"
      
Text1.Enabled = FalseEnd Sub
Private Sub Text1_Change()
If Val(Text1.Text) > 65535 Then Text1.Text = "65535"
If Val(Text1.Text) >= 0 And Val(Text1.Text) < 65535 Then
   Command1.Enabled = True
End If
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 8 Then Exit Sub
If KeyAscii < 48 Or KeyAscii > 57 Then    '如果输入不是0~9
    KeyAscii = 0
End IfEnd Sub这个程序相对于我的程序还是比较独立的,没有什么参数传递,它功能就是发送脉冲到仪器。为了以后能做成安装包,所以不能用设置路径打开程序的方式打开脉冲程序。我的想法是把它弄成对话框类的东西,然后弄个类似dll,lib的东西,在vc里面insert。我是菜鸟,想法幼稚,见笑了。请求高人指点啊!