¾È³çÇϼ¼¿ä!! óÀ½ ¿À¼Ì³ª¿ä??
 
CAD ( 46 )
Á¦¾î/°èÃø/¼¾¼­ ( 4 )
µµ±Ý/µµÀå ( 1 )
¾÷üã±â ( 3 )
±ÝÇü ( 4 )
°øÇÐ ( 13 )
±â°è¿ä¼Ò ( 15 )
ÀÚµ¿È­(FA) ( 35 )
±â¼ú¹ø¿ª ( 2 )
±Ý¼ÓÀç·á ( 18 )
¼³°èÁ¦µµ ( 41 )
±â°è±Ý¼Ó ( 15 )
ȯ°æ/¿¡³ÊÁö ( 2 )
Glofa-Gm C-net Àü¿ë Åë½Å VB -> VB.NETÀ¸·Î ¹Ù²Ù´Â ÁßÀä..
ÀÚµ¿È­(FA)> Àü¿ë±â
2010-08-24 08:00:36
ustoro
´äº¯ : 0
̵̧ : 0
Á¶È¸ : 12010
ÇöÀç VB·Î µÈ GLOFA Àü¿ëÅë½ÅÀ» VB.NETÀ¸·Î ÄÁ¹öÀüÇÒ·Á°íÇϴµ¥¿ä.... ¾Æ·¡ ¼Ò½ºÁ¡ º¸½Ã°í µµ¿ÍÁÖ¼ÌÀ¸¸éÇÕ´Ï´Ù.
VB¼Ò½ºÀÔ´Ï´Ù.
Public Function Replace(bufRW As String, bufType As String, bufAddress As Integer, _
                        bufNumber As String, bufData As String)
Dim Bcc As Byte
Dim iBcc As Integer
Dim sBcc As String
Dim lRefTime As Long
Dim ±æÀÌ As String
Dim CPU_°¹¼ö As String
Dim Buffer As String
Dim length As Long
Dim Data As String
Dim Cpu_Add As String
Dim Change_Add As String
Dim Org_Hex As String
Dim Org_Hex_2Bit As String
Dim Org_Hex_4Bit As String
Dim Org_Hex_Rev As String
Dim Org_Hex_Rev_4Bit As String
Dim i As Integer
Dim m As String
Dim l As Integer
On Error GoTo pass
    bufRW = UCase(bufRW)
    Select Case Len(bufNumber)
        Case Is > 2
            bufNumber = Right(bufNumber, 2)
        Case Is <= 1
            bufNumber = "0" & bufNumber
    End Select
       
    ±æÀÌ = "0" & Len(bufType & bufAddress)
       
    If Plc_Port_Select = "CNET" Then
   
'        ' BCC¸¦ °è»êÇÕ´Ï´Ù.
'        iBcc = 5 + ByteCheckSum(Data) + 4
'        If iBcc > 255 Then iBcc = iBcc - 256
'        Bcc = CByte(iBcc)
'        sBcc = ByteToHexStr(Bcc)
       
        If bufRW = "R" Then
            frmMain.MSComm1.Output = Chr$(5) + "00" & bufRW & "SB" & ±æÀÌ & bufType & bufAddress & bufNumber + Chr$(4) & sBcc
        Else
            frmMain.MSComm1.Output = Chr$(5) + "00" & bufRW & "SB" & ±æÀÌ & bufType & bufAddress & bufNumber & bufData + Chr$(4)
        End If
    Else
        Select Case bufType
            Case Is = "%MB"
                Cpu_Add = Hex(bufAddress)
                CPU_°¹¼ö = Hex(Val(bufNumber))
            Case Is = "%MW"
                Cpu_Add = Hex(bufAddress * 2)
                CPU_°¹¼ö = Hex(Val(bufNumber) * 2)
            Case Is = "%MD"
                Cpu_Add = Hex(bufAddress * 4)
                CPU_°¹¼ö = Hex(Val(bufNumber) * 4)
        End Select
       
        Select Case Len(CPU_°¹¼ö)
            Case Is > 2
                CPU_°¹¼ö = Right(CPU_°¹¼ö, 2)
            Case Is <= 1
                CPU_°¹¼ö = "0" & CPU_°¹¼ö
        End Select
       
        For i = 1 To (6 - Len(Cpu_Add))
            Cpu_Add = "0" & Cpu_Add
        Next
       
        If bufRW = "R" Then
       
            Change_Add = "rZ" & Right(Cpu_Add, 2) & Mid(Cpu_Add, 3, 2) & Left(Cpu_Add, 2) & CPU_°¹¼ö
           
            iBcc = ByteCheckSum(Change_Add)     ' BCC¸¦ °è»êÇÕ´Ï´Ù.
            If iBcc > 255 Then iBcc = iBcc - 256
            Bcc = CByte(iBcc)
            sBcc = ByteToHexStr(Bcc)
           
            frmMain.MSComm1.Output = Chr$(2) + Change_Add + sBcc + Chr$(3)
           
        Else
       
            Change_Add = "wZ" & Right(Cpu_Add, 2) & Mid(Cpu_Add, 3, 2) & Left(Cpu_Add, 2) & CPU_°¹¼ö & bufData
           
            iBcc = ByteCheckSum(Change_Add)     ' BCC¸¦ °è»êÇÕ´Ï´Ù.
            If iBcc > 255 Then iBcc = iBcc - 256
            Bcc = CByte(iBcc)
            sBcc = ByteToHexStr(Bcc)
           
            frmMain.MSComm1.Output = Chr$(2) + Change_Add + sBcc + Chr$(3)
           
        End If
       
    End If
       
        ' Time OutÀ» °è»êÇϱâ À§ÇØ µ¥ÀÌÅ͸¦ SendÇÑ ½Ã°£À» ±â·ÏÇÕ´Ï´Ù.
        lRefTime = GetTickCount()
        ' ETX°¡ ¼ö½ÅµÇ°Å³ª Time OutÀÌ ¹ß»ýÇÒ ¶§±îÁö Loop¸¦ µ½´Ï´Ù.
        Do
            DoEvents
            Buffer$ = Buffer$ & frmMain.MSComm1.Input
            ' ETX°¡ ¼ö½ÅµÇ¾ú´ÂÁö¸¦ Check ÇÕ´Ï´Ù.
            If Plc_Port_Select = "CNET" Then
                length = InStr(Buffer$, Chr$(3))
            Else
                length = InStr(Buffer$, Chr$(4))
            End If
           
            ' Time OutÀ» Check ÇÕ´Ï´Ù. (¿©±â¿¡¼­´Â 1000 msec·Î ¼³Á¤ÇÏ¿´½À´Ï´Ù.)
            If ((GetTickCount() - lRefTime) > 1000) Then
           
                frmMain.Label1.Caption = "¿¬°áÀÌ ²÷°å½À´Ï´Ù."
                Exit Function
               
            End If
                                   
        Loop Until (length)
       
            Buffer$ = Buffer$ & frmMain.MSComm1.Input
           
        If Plc_Port_Select = "CNET" Then
       
            Replace = Mid(Buffer$, 2, length - 2)
            Data = Mid(Buffer$, 2, length - 2)
       
        Else
            If bufRW = "R" Then
            Org_Hex = Mid(Buffer$, 3, length - 5)
                Select Case bufType
                    Case Is = "%MB"
                        Replace = Org_Hex
                    Case Is = "%MW"
                        Do
                            Org_Hex_2Bit = Left(Org_Hex, 4)
                            m = Right(Org_Hex_2Bit, 2) & Left(Org_Hex_2Bit, 2)
                            Org_Hex = Mid(Org_Hex, 5)
                            Org_Hex_Rev = Org_Hex_Rev & m
                            Replace = Org_Hex_Rev
                        Loop Until Org_Hex = ""
                    Case Is = "%MD"
                        Do
                            Org_Hex_2Bit = Left(Org_Hex, 4)
                            m = Right(Org_Hex_2Bit, 2) & Left(Org_Hex_2Bit, 2)
                            Org_Hex = Mid(Org_Hex, 5)
                            Org_Hex_Rev = Org_Hex_Rev & m
                            Replace = Org_Hex_Rev
                        Loop Until Org_Hex = ""
                        Do
                            Org_Hex_4Bit = Left(Org_Hex_Rev, 8)
                            m = Right(Org_Hex_4Bit, 4) & Left(Org_Hex_4Bit, 4)
                            Org_Hex_Rev = Mid(Org_Hex_Rev, 9)
                            Org_Hex_Rev_4Bit = Org_Hex_Rev_4Bit & m
                            Replace = Org_Hex_Rev_4Bit
                        Loop Until Org_Hex_Rev = ""
                End Select
               
                For l = 1 To 9
                    Replace = "0" & Replace
                Next
            Else
                Replace = "00WSB"
            End If
        End If
       
        PgrBar = PgrBar + 1
        If PgrBar > 100 Then PgrBar = 0
        frmMain.PgrBar1 = PgrBar
       
    Exit Function
   
pass:
       
End Function
 
¾Æ·¡Ã³·³º¯°æÇߴµ¥¿ä... °ªÀÌ Æ²¸®°Ô ³ª¿À³×¿ä... ¹¹°¡ ¹®Á¦ÀÎÁö....
VB.NET ¼Ò½ºÀÔ´Ï´Ù.
    Public Function Replace_Char(ByVal bufRW As String, ByVal bufType As String, ByVal bufAddress As Integer, ByVal bufNumber As String, ByVal bufData As String) As String
        Dim Bcc As Byte
        Dim iBcc As Integer
        Dim sBcc As String
        Dim lRefTime As Long
        Dim ±æÀÌ As String
        Dim CPU_°¹¼ö As String
        Dim Buffer As String
        Dim length As Long
        Dim Data As String
        Dim Cpu_Add As String
        Dim Change_Add As String
        Dim Org_Hex As String
        Dim Org_Hex_2Bit As String
        Dim Org_Hex_4Bit As String
        Dim Org_Hex_Rev As String
        Dim Org_Hex_Rev_4Bit As String
        Dim i As Integer
        Dim m As String
        Dim l As Integer
        Try
            If Com_Check = False Then
                Exit Function
            End If
            bufRW = UCase(bufRW)
            Select Case Len(bufNumber)
                Case Is > 2
                    bufNumber = Right(bufNumber, 2)
                Case Is <= 1
                    bufNumber = "0" & bufNumber
            End Select
            ±æÀÌ = "0" & Len(bufType & bufAddress)
            If Plc_Port_Select = "CNET" Then
                ' BCC¸¦ °è»êÇÕ´Ï´Ù.
                iBcc = 5 + ByteCheckSum(bufData) + 4
                If iBcc > 255 Then iBcc = iBcc - 256
                Bcc = CByte(iBcc)
                sBcc = ByteToHexStr(Bcc)
                If bufRW = "R" Then
                    frmMain.MSComm1.Output = Chr(5) & "00" & bufRW & "SB" & ±æÀÌ & bufType & bufAddress & bufNumber & Chr(4) & sBcc
                Else
                    frmMain.MSComm1.Output = Chr(5) & "00" & bufRW & "SB" & ±æÀÌ & bufType & bufAddress & bufNumber & bufData & Chr(4)
                End If
            Else
                Select Case bufType
                    Case Is = "%MB"
                        Cpu_Add = Hex(bufAddress)
                        CPU_°¹¼ö = Hex(Val(bufNumber))
                    Case Is = "%MW"
                        Cpu_Add = Hex(bufAddress * 2)
                        CPU_°¹¼ö = Hex(Val(bufNumber) * 2)
                    Case Is = "%MD"
                        Cpu_Add = Hex(bufAddress * 4)
                        CPU_°¹¼ö = Hex(Val(bufNumber) * 4)
                End Select
                Select Case Len(CPU_°¹¼ö)
                    Case Is > 2
                        CPU_°¹¼ö = Right(CPU_°¹¼ö, 2)
                    Case Is <= 1
                        CPU_°¹¼ö = "0" & CPU_°¹¼ö
                End Select
                For i = 1 To (6 - Len(Cpu_Add))
                    Cpu_Add = "0" & Cpu_Add
                Next
                If bufRW = "R" Then
                    Change_Add = "rZ" & Right(Cpu_Add, 2) & Mid(Cpu_Add, 3, 2) & Left(Cpu_Add, 2) & CPU_°¹¼ö
                    iBcc = ByteCheckSum(Change_Add) ' BCC¸¦ °è»êÇÕ´Ï´Ù.
                    If iBcc > 255 Then iBcc = iBcc - 256
                    Bcc = CByte(iBcc)
                    sBcc = ByteToHexStr(Bcc)
                    frmMain.MSComm1.Output = Chr(2) & Change_Add & sBcc & Chr(3)
                Else
                    Change_Add = "wZ" & Right(Cpu_Add, 2) & Mid(Cpu_Add, 3, 2) & Left(Cpu_Add, 2) & CPU_°¹¼ö & bufData
                    iBcc = ByteCheckSum(Change_Add) ' BCC¸¦ °è»êÇÕ´Ï´Ù.
                    If iBcc > 255 Then iBcc = iBcc - 256
                    Bcc = CByte(iBcc)
                    sBcc = ByteToHexStr(Bcc)
                    frmMain.MSComm1.Output = Chr(2) & Change_Add & sBcc & Chr(3)
                End If
            End If
            ' Time OutÀ» °è»êÇϱâ À§ÇØ µ¥ÀÌÅ͸¦ SendÇÑ ½Ã°£À» ±â·ÏÇÕ´Ï´Ù.
            lRefTime = GetTickCount()
            ' ETX°¡ ¼ö½ÅµÇ°Å³ª Time OutÀÌ ¹ß»ýÇÒ ¶§±îÁö Loop¸¦ µ½´Ï´Ù.
            Do
                System.Windows.Forms.Application.DoEvents()
                Buffer = Buffer & frmMain.MSComm1.Input
                ' ETX°¡ ¼ö½ÅµÇ¾ú´ÂÁö¸¦ Check ÇÕ´Ï´Ù.
                If Plc_Port_Select = "CNET" Then
                    length = InStr(Buffer, Chr(3))
                Else
                    length = InStr(Buffer, Chr(4))
                End If
                ' Time OutÀ» Check ÇÕ´Ï´Ù. (¿©±â¿¡¼­´Â 1000 msec·Î ¼³Á¤ÇÏ¿´½À´Ï´Ù.)
                If ((GetTickCount() - lRefTime) > 1000) Then
                    frmMain.Label1.Text = "¿¬°áÀÌ ²÷°å½À´Ï´Ù."
                    Exit Function
                End If
            Loop Until (length)
            Buffer = Buffer & frmMain.MSComm1.Input
            If Plc_Port_Select = "CNET" Then
                Replace_Char = Mid(Buffer, 2, length - 2)
                Data = Mid(Buffer, 2, length - 2)
            Else
                If bufRW = "R" Then
                    Org_Hex = Mid(Buffer, 3, length - 5)
                    Select Case bufType
                        Case Is = "%MB"
                            Replace_Char = Org_Hex
                        Case Is = "%MW"
                            Do
                                Org_Hex_2Bit = Left(Org_Hex, 4)
                                m = Right(Org_Hex_2Bit, 2) & Left(Org_Hex_2Bit, 2)
                                Org_Hex = Mid(Org_Hex, 5)
                                Org_Hex_Rev = Org_Hex_Rev & m
                                Replace_Char = Org_Hex_Rev
                            Loop Until Org_Hex = ""
                        Case Is = "%MD"
                            Do
                                Org_Hex_2Bit = Left(Org_Hex, 4)
                                m = Right(Org_Hex_2Bit, 2) & Left(Org_Hex_2Bit, 2)
                                Org_Hex = Mid(Org_Hex, 5)
                                Org_Hex_Rev = Org_Hex_Rev & m
                                Replace_Char = Org_Hex_Rev
                            Loop Until Org_Hex = ""
                            Do
                                Org_Hex_4Bit = Left(Org_Hex_Rev, 8)
                                m = Right(Org_Hex_4Bit, 4) & Left(Org_Hex_4Bit, 4)
                                Org_Hex_Rev = Mid(Org_Hex_Rev, 9)
                                Org_Hex_Rev_4Bit = Org_Hex_Rev_4Bit & m
                                Replace_Char = Org_Hex_Rev_4Bit
                            Loop Until Org_Hex_Rev = ""
                    End Select
                    For l = 1 To 9
                        Replace_Char = "0" & Replace_Char
                    Next
                Else
                    Replace_Char = "00WSB"
                End If
            End If
            PgrBar = PgrBar + 1
            If PgrBar > 100 Then PgrBar = 0
            frmMain.PgrBar1.Value = PgrBar
        Catch ex As Exception
            ErrorTextWrite(ex)
        End Try
    End Function
 
°í¼ö´ÔÁ¡ ºÎŹµå¸³´Ï´Ù.
»óÈ£ : (ÁÖ)¸ÞÄ«ÇǾÆ(¼­¿ïÁöÁ¡)´ëÇ¥ÀÌ»ç : ±èÇöÁÖ»ç¾÷ÀÚµî·Ï¹øÈ£ : 119-85-40453Åë½ÅÆǸž÷½Å°í : Á¦ 2023-¼­¿ïÁ¾·Î-1613È£
°³ÀÎÁ¤º¸º¸È£Ã¥ÀÓÀÚ : ±èÇöÁÖ»ç¾÷Àå¼ÒÀçÁö : [03134] ¼­¿ïƯº°½Ã Á¾·Î±¸ µ·È­¹®·Î 88-1, 3Ãþ
´ëÇ¥ÀüÈ­: 1544-1605¸¶ÄÉÆÃ: 02-861-9044±â¼ú±³À°Áö¿ø: 02-861-9044Æѽº: 02-6008-9111E-mail : mechapia@mechapia.com
Copyright(c)2008 Mechapia Co. All rights reserved.