大家好
我现在需要做一个project
内容是
用vb的mscomm透过rs232去连结单片机,型号是pic16f690,用pickit2 starter kit写程序
而这块单片机是驳上电路当通电时,单片机就发一个讯息,使vb开始计时
断电时就能使vb停止计时那么, 那块单片机和rs232应该是怎样连接
pic16f690 和vb 的程序又是怎么写?
谢谢大家!

解决方案 »

  1.   

    你说的单片机没用过,
    左近也在搞单片机的上位机程序
    用到了mscomm控件,论坛里关于它的使用很多,也很全
    你搜一就有了
    不知vb你用过没,如果用过操作mscomm就会容易些了
    我也是看别人的例子学得
    呵呵,简单例子有一个,只是模型,,具体的还要看你自己想怎么用了Private Sub Form_Load()
        Dim BufferCount As Integer, NowBaudRate As Integer   
        Port = "1"
        '设置串口属性, 打开串口
        MSComm2.CommPort = 1                        '设置或返回端口号,值为1到16的整数,PC通常可以有16个串口
        MSComm2.InBufferSize = 1024                 '设置接收缓冲区的大小
        MSComm2.Settings = "115200,n,8,1"           '设置并返回通讯参数,值为字符串String行
        MSComm2.InputLen = 0                        '设置或返回,从接收缓冲区读取的字符数,0时(默     '读取缓 冲区全部字符
        MSComm2.RThreshold = 1                      '接收区的“门阀值”,0时(默认),不产生OnComm事件;1时,接收缓冲区每接收到一个字符,都会产生OnComm事件
        MSComm2.SThreshold = 1                      '发送区的“门阀值”,0时(默认),不产生OnComm事件;1时,发送缓冲区每接收到一个字符,都会产生OnComm事件
        MSComm2.InBufferCount = 0
        MSComm2.PortOpen = True                     '通讯时,必须打开串口,应用程序完成时,MSComm控件自动关闭串口
        MSComm2.InputMode = comInputModeText        '以文本方式取回传入的数据,既comInputModeText = 0End SubPrivate Sub MSComm2_OnComm()      '串口事件
    Dim str1 As Currency, str2 As Variant, i As IntegerSelect Case MSComm2.CommEvent
           Case comEvSend             '1  串口有发送
                
            ...........        Case comEvReceive          '2  串口有接收       ..................
                End Select
    End Select
    End Sub
      

  2.   

    謝謝你的回答我還有個問題
    如果我的單片機會發兩個訊息給VB
    例如一個是 "a" , 另一個是 "b"當發送 "a" 或 "b" 時, vb 裡的text1 能顯示相對應的"a" 和 "b"這應該怎樣寫?
      

  3.   

    啊…刚刚忘了转做简体,又不能修改,只好再发文了谢谢你的回答 我还有个问题 
    如果我的单片机会发两个讯息给VB 
    例如一个是 "a" , 另一个是 "b" 当发送 "a" 或 "b" 时, vb 里的text1 能显示相对应的"a" 和 "b" 这应该怎样写?
      

  4.   

    Private Sub MSComm1_OnComm() '接收到数据
      Dim Ip() As Byte
      Dim Tmp As String
      Dim Rec_ccitt As String
      
      Select Case MSComm1.CommEvent
      Case comEvReceive
        Ip = MSComm1.Input
        For i = LBound(Ip) To UBound(Ip)
            If Len(Hex(Ip(i))) = 1 Then Buf = Buf & "0"
            Buf = Buf & Hex(Ip(i))
        Next
      End Select
    text1.text=Buf
    End Sub
      

  5.   

    我又想再问问
    如果当 单片机没有再发讯号给vb
    那么vb就可以会一个动作这样应怎样写呢??
    谢谢大家
      

  6.   

    不是很难啊,看一下MSND是上有关串口通信的就可以了,就是要监看输入缓冲区,当数据过来,会有变化,以前做过的,忘了,你看看吧。