首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

急VB转C#一个串口程序!该怎么处理

2012-01-28 
急!急!急!VB转C#!一个串口程序!VB写的一个串口程序,现在要转成C#。我又不会VB,请各位帮帮忙,分不够再加!代

急!急!急!VB转C#!一个串口程序!
VB写的一个串口程序,现在要转成C#。
我又不会VB,请各位帮帮忙,分不够再加!
代码如下:


Option   Explicit
Dim   COUNTER   As   Integer
Dim   crc0   As   Integer
Dim   BO   As   Boolean
Dim   CRC   As   Integer
Dim   k   As   Integer
Dim   out(0)   As   Byte
Dim   data(400)   As   Byte
Dim   RxBuff(1000)   As   Byte
Dim   RxPoint   As   Integer
Dim   Filenum   As   Integer
Dim   Filenum_zo   As   Integer
Dim   Filenum_fu   As   Integer

Dim   Fun         As   Byte
  Dim   Cnt2   As   Integer
 
Dim   Fang_Lmm(3120)   As   Single
Dim   Fu_Lmm(1120)   As   Single
Dim   Zo_Lmm(1120)   As   Single

Dim   Fang_str(3120)   As   String   *   6
Dim   Fu_str(1120)   As   String   *   6
Dim   Zo_str(1120)   As   String   *   6


Private   Sub   Command1_Click()
      Dim   str   As   String   *   36
        Text1.Text   =   " "
        Text2.Text   =   " "
        Text4.Text   =   " "
        Label2.Caption   =   " "
        Label1.Caption   =   " "
        Fun   =   3
        Cnt2   =   0
        Filenum   =   0
        Filenum_fu   =   0
        Filenum_zo   =   0
       
       
       
        Call   Fun_3_fuchong
End   Sub

Private   Sub   Command2_Click()
        Dim   str   As   String   *   36
        Text1.Text   =   " "
        Text3.Text   =   " "
        Label2.Caption   =   " "
        'Label1.Caption   =   " "
        Fun   =   4
        Cnt2   =   0
        Filenum   =   0
            Filenum_fu   =   0
        Filenum_zo   =   0
       
     
       
        Call   Fun_4_fangdian
End   Sub


 
  Timer1.Enabled   =   True
End   Sub


Private   Sub   Timer1_Timer()
      Dim   i   As   Integer
      Dim   J   As   Integer
      Dim   meter   As   Integer
      Dim   m   As   Byte
     
      Dim   MFILE   As   Byte
     
      Dim   Mydata(10)   As   Byte
      Dim   str   As   String   *   36


      Dim   str1   As   String   *   21
      Dim   mj   As   String
      Dim   drr   As   String
      Dim   Datae(6)   As   Byte
      Dim   Cnt1   As   Integer
      Dim   Total   As   Integer
      Dim   Cnt6   As   Integer
      Dim   Tvv   As   Integer
      Dim   modd   As   Byte
      Dim   Lmm   As   Single
      Dim   sstr   As   String
     
     
      Timer1.Enabled   =   False
     
     
      If   RxBuff(0)   =   &HEE   And   RxBuff(1)   =   &HEE   Then
                        If   Fun   =   3   Then
                                'Text2.Text   =   " "
                        ElseIf   Fun   =   4   Then
                                'Text3.Text   =   " "
                        Else
                        End   If
               
              MFILE   =   FreeFile
              If   Fun   =   3   Then
                              '       Open   "D:\浮充电压记录.txt "   For   Random   Access   Write   As   #MFILE   Len   =   Len(str)
                Else
                                '     Open   "D:\放电记录.txt "   For   Random   Access   Write   As   #MFILE   Len   =   Len(str)
                End   If
           
             
                For   J   =   0   To   15
                        'Text2.Text   =   " "
                        For   m   =   0   To   2
                              Datae(m)   =   RxBuff(J   *   8   +   8   +   m)
                                'Text2.Text   =   Text2.Text   +   ", "   +   CStr(Hex(RxBuff(J   *   8   +   8   +   m)))


                        Next
                       
                        Cnt1   =   Datae(0)   And   15
                        Cnt1   =   Cnt1   *   256   +   Datae(1)
                       
                        If   (Datae(2)   And   15)   =   1   Then
                                If   Cnt1   <   264   Then
                                      Lmm   =   (Cnt1   *   1.2011   +   1.5176)   /   100
                                ElseIf   Cnt1   <   264   Then
                                      Lmm   =   (Cnt1   *   1.2052   +   0.4145)   /   100
                                Else
                                      Lmm   =   (Cnt1   *   1.2026   +   2.0234)   /   100
                                End   If
                        ElseIf   (Datae(2)   And   15)   =   2   Then
                                    If   Cnt1   <   591   Then
                                      Lmm   =   (Cnt1   *   2.9462   +   5.7479)   /   100
                                  ElseIf   Cnt1   <   831   Then
                                      Lmm   =   (Cnt1   *   2.9583   -   1.3748)   /   100
                                  Else
                                      Lmm   =   (Cnt1   *   2.9483   +   6.9827)   /   100
                                  End   If
                        ElseIf   (Datae(2)   And   15)   =   3   Then
                                Lmm   =   (Cnt1   *   9.5099   +   12.2523)   /   100


                        ElseIf   (Datae(2)   And   15)   =   4   Then
                                Lmm   =   (Cnt1   *   30.0434   +   2.2517)   /   100
                        Else
                       
                        End   If
                       
                        Datae(0)   =   RxBuff(4)
                        Cnt1   =   Datae(0)
                        Datae(1)   =   RxBuff(5)
                        Cnt1   =   Cnt1   *   256   +   Datae(1)
                        Total   =   Cnt1
                        Cnt6   =   Cnt1   Mod   16
                        Datae(3)   =   Cnt6
                        On   Error   GoTo   ch000
                        Cnt1   =   (Cnt1   -   Cnt6)   /   16
                       
                       
                        Datae(0)   =   RxBuff(6)
                        Cnt6   =   Datae(0)
                        Datae(1)   =   RxBuff(7)
                        Cnt6   =   Cnt6   *   256   +   Datae(1)
                       
                        Datae(5)   =   Datae(2)   And   &H80
                        If   (Datae(5))   =   0   Then
                                    sstr   =   "OK "
                        Else
                                    sstr   =   "NO "
                        End   If
                       
                        Cnt2   =   Cnt2   +   1


                        str   =   "第 "   +   CStr(Cnt2)   +   "条 "   +   sstr   +   "记录: "   +   "电压     "   +   CStr(Lmm)   +   "V "   +   "               "
                       
                        If   Cnt6   >   Cnt1   Then
                                    If   (J   +   1)   >   Datae(3)   Then
                                            str   =   " "
                                              J   =   20   '退出
                                    End   If
                        End   If
                        On   Error   GoTo   ch000
                        Tvv   =   (Cnt6   -   1)   /   Cnt1   *   100
                        drr   =   Left$(CStr(Tvv),   6)
                        Label2.Caption   =   "已完成 "   +   CStr(Tvv)   +   "% "
                        'Label1.Caption   =   " "       ' "提取数据不完整,请重新试一次! "
                        If   Cnt6   >   Cnt1   Then
                                'Label1.Caption   =   "所有 "   +   CStr(Total)   +   "条记录已成功提取! "
                                Label2.Caption   =   "已完成 "   +   "100 "   +   "% "
                                If   Fun   =   3   Then
                                      Timer2.Enabled   =   True
                                End   If
                             
                        End   If
                       


                       
                       
                       
                        'str   =   CStr(Lmm)     gg
                        Filenum   =   Filenum   +   1
                        If   Fun   =   3   Then       '浮充电压
                                str1   =   str
                                Text2.Text   =   Text2.Text   +   str1
                                If   (Lmm   >   10)   Then     '总电压                                   '总电压调整
                                          Filenum_zo   =   Filenum_zo   +   1
                                          Zo_Lmm(Filenum_zo)   =   Lmm
                                          Zo_str(Filenum_zo)   =   sstr
                                         
                               
                                Else           '浮充电压
                                          Filenum_fu   =   Filenum_fu   +   1
                                          Fu_Lmm(Filenum_fu)   =   Lmm
                                          Fu_str(Filenum_fu)   =   sstr
                               
                               
                                End   If
                               
                        ElseIf   Fun   =   4   Then                                   'fang电压


                                str1   =   str
                                Text3.Text   =   Text3.Text   +   str1
                                Fang_Lmm(Filenum)   =   Lmm
                                Fang_str(Filenum)   =   sstr
                        Else
                              Text2.Text   =   "功能码出错! "
                        End   If
                        m   =   Len(str)
                     
                        str   =   CStr(Lmm)
                        'Put   #MFILE,   Filenum,   str
                Next
                'Close   #MFILE
                If   Cnt6   <   Cnt1   +   1   Then
                        If   Fun   =   3   Then
                                  Call   Fun_3_fuchong
                        Else
                                  Call   Fun_4_fangdian
                        End   If
                End   If
        End   If
             
   
     
    RxPoint   =   0
    Exit   Sub
   
ch000:
        Resume   Next
   
   
End   Sub


Private   Sub   Fun_3_fuchong()
          Dim   Mint   As   Integer
        Dim   meter   As   Byte
       
       
       
                Fun   =   3
             
              data(0)   =   &HEE
              data(1)   =   &HEE
              data(2)   =   3           '功能码
              data(3)   =   1
              data(4)   =   3


              Mint   =   data(2)   +   data(3)   +   data(4)
              data(5)   =   Mint   Mod   256     'cs
              data(6)   =   &HAB

              For   meter   =   0   To   6
                    out(0)   =   data(meter)
                    MSComm1.Output   =   out
                    'Text1.Text   =   Text1.Text   +   ", "   +   CStr(Hex(data(meter)))
              Next
End   Sub


Private   Sub   Fun_4_fangdian()
    Dim   Mint   As   Integer
        Dim   meter   As   Byte
       
       
       

              Fun   =   4
              data(0)   =   &HEE
              data(1)   =   &HEE
              data(2)   =   4           '功能码
              data(3)   =   1
              data(4)   =   4
              Mint   =   data(2)   +   data(3)   +   data(4)
              data(5)   =   Mint   Mod   256     'cs
              data(6)   =   &HAB

              For   meter   =   0   To   6
                    out(0)   =   data(meter)
                    MSComm1.Output   =   out
                    'Text1.Text   =   Text1.Text   +   ", "   +   CStr(Hex(data(meter)))
              Next
End   Sub


[解决办法]
mark
[解决办法]
Fun = 4
data(0) = &HEE
data(1) = &HEE
data(2) = 4 '功能码
data(3) = 1
data(4) = 4
Mint = data(2) + data(3) + data(4)
data(5) = Mint Mod 256 'cs
data(6) = &HAB

这些都是赋值啊
For meter = 0 To 6
out(0) = data(meter)
MSComm1.Output = out
'Text1.Text = Text1.Text + ", " + CStr(Hex(data(meter)))
Next

这是一个for 循环
(for int i = 0; i <= 6 ;i++ )

out(0) = data(meter)

[解决办法]
0xEE 0xAB

你把整个程序帖出来,这样谁有时间帮你改呀,必须先自已吃透,有关键东西不懂的再问
------解决方案--------------------


楼主呀,这么长,光看懂这些代码都可以写一个全新的了
[解决办法]
&HEE
&HAB
表示16进制数,EE和AB
[解决办法]
貌似这里很多人都没用过VB啊,呵呵
楼主这个要求恐怕没人能帮你,关键是通讯的指令,至于这些指令怎么发送的自己写通讯程序,很简单的啊

热点排行