Imports System.Globalization Imports System.IO.Ports Imports System.Runtime.Remoting.Messaging Module SerialPortMoudule Private Const FormName As String = "DUALSONIC Product Manager Serial Port Ver " & MainForm.FormVersion Public UseSerial_Ch1 As SerialPort Private rxMessage As String = String.Empty Private cmdMessage As String = String.Empty Public Sub UseSerialSetting(UseSerial As SerialPort) UseSerial_Ch1 = UseSerial End Sub Public Function OpenSerial(SelectPort As String) As Boolean Try If UseSerial_Ch1.IsOpen = False Then With UseSerial_Ch1 .PortName = SelectPort .BaudRate = 230400 .DataBits = 8 .Parity = Parity.None .StopBits = StopBits.One .Handshake = Handshake.None .Open() End With Return True Else MsgBox("해당 포트는 Open 상태입니다. 연결을 끊고 다시 연결하여 주십시오.", vbExclamation, FormName) Return False End If Catch ex As Exception MsgBox("COM 포트 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName) Return False End Try End Function Public Function SendData(SendMessage As String) As Boolean Try If UseSerial_Ch1.IsOpen = True Then UseSerial_Ch1.DiscardInBuffer() UseSerial_Ch1.DiscardOutBuffer() UseSerial_Ch1.WriteTimeout = -1 UseSerial_Ch1.WriteLine(SendMessage) Return False Else MsgBox("통신 포트가 열리지 않았습니다.", vbCritical, FormName) Return True End If Catch ex As Exception MsgBox("COM 포트 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName) Return True End Try End Function Public Function PollingReceiveData(RdTimeout As Long) As String Try If UseSerial_Ch1.IsOpen = True Then rxMessage = "" UseSerial_Ch1.ReadTimeout = RdTimeout rxMessage = UseSerial_Ch1.ReadLine Return ParsingData() Else MsgBox("통신 포트가 열리지 않았습니다.", vbCritical, FormName) Return False End If Catch ex As Exception MsgBox("COM 포트 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName) Return False End Try End Function Private Function ParsingData() As String Dim cmdStr As String Dim cmdVal(0 To 7) As String Dim i As Integer Try cmdStr = "0" If rxMessage <> "" Then cmdMessage = "" If Mid(rxMessage, 1, 1) = "[" Then cmdMessage = Mid(rxMessage, 2, Len(rxMessage)) cmdStr = Mid(cmdMessage, 1, (InStr(rxMessage, " ") - 2)) cmdMessage = Mid(rxMessage, InStr(rxMessage, " ") + 1, Len(cmdMessage)) For i = 1 To 7 If InStr(cmdMessage, ",") <> 0 Then cmdVal(i) = Mid(cmdMessage, 1, InStr(cmdMessage, ",") - 1) cmdMessage = Mid(cmdMessage, InStr(cmdMessage, ",") + 1, Len(cmdMessage)) ElseIf InStr(cmdMessage, "]") <> 0 Then cmdVal(i) = Mid(cmdMessage, 1, InStr(cmdMessage, "]") - 1) 'cmdMessage = Mid(cmdMessage, InStr(cmdMessage, "]") + 1, Len(cmdMessage)) Else Exit For End If Next i rxMessage = "" Select Case cmdStr '' DUALSONIC Case "cartauth" cmdStr = cmdVal(1) Return cmdStr Case "cartmanu" cmdStr = cmdVal(1) Return cmdStr Case "ctmodel" cmdStr = cmdVal(1) Return cmdStr Case "carttype" cmdStr = cmdVal(1) Return cmdStr Case "cartsn" cmdStr = cmdVal(1) Return cmdStr Case "cartmanu" cmdStr = cmdVal(1) Return cmdStr Case "ctabroad" cmdStr = cmdVal(1) Return cmdStr Case "ctagency" cmdStr = cmdVal(1) Return cmdStr Case "cartfreq" cmdStr = cmdVal(1) Return cmdStr Case "ctpower" cmdStr = cmdVal(1) Return cmdStr Case "frontsen" cmdStr = cmdVal(1) Return cmdStr Case "rshotcnt" cmdStr = cmdVal(1) Return cmdStr Case "tshotcnt" cmdStr = cmdVal(1) Return cmdStr Case "mainauth" cmdStr = cmdVal(1) Return cmdStr Case "rdstconf" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "wrstconf" cmdStr = cmdVal(1) Return cmdStr '' MAXIMUM Case "rdsconf1" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "wrsconf1" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "shotconf" cmdStr = cmdVal(1) Return cmdStr Case "rdstinfo" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "wrstinfo" cmdStr = cmdVal(1) Return cmdStr Case "rdsinfo4" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6) & "," & cmdVal(7) Return cmdStr Case "rdsinfo5" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "wrsinfo4" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "deviceon" cmdStr = cmdVal(1) Return cmdStr Case "entermft" cmdStr = cmdVal(1) Return cmdStr Case "mftmode" cmdStr = cmdVal(1) Return cmdStr Case "runmc" cmdStr = cmdVal(1) Return cmdStr Case "runrf" cmdStr = cmdVal(1) Return cmdStr Case "runep" cmdStr = cmdVal(1) Return cmdStr Case "endmft" cmdStr = cmdVal(1) Return cmdStr Case "runhifu" cmdStr = cmdVal(1) Return cmdStr Case "dsfwver" cmdStr = cmdVal(1) Return cmdStr Case "rdbattlv" cmdStr = cmdVal(1) Return cmdStr Case "rdtemp" cmdStr = cmdVal(1) & "," & cmdVal(2) Return cmdStr Case "resetinf" cmdStr = cmdVal(1) Return cmdStr Case "settdsn" cmdStr = cmdVal(1) Return cmdStr Case "settdcnf" cmdStr = cmdVal(1) & "," & cmdVal(2) Return cmdStr Case "runled" cmdStr = cmdVal(1) Return cmdStr Case "setmotor" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "runbuzz" cmdStr = cmdVal(1) Return cmdStr ''ALTO Case "rdsinfo7" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "rdsinfo8" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr End Select End If End If Return False Catch ex As Exception rxMessage = "" MsgBox("Receive 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName) Return False End Try End Function End Module