Reply To: How To Receive very long and complex ACK?

Home Forums V-Control General How To Receive very long and complex ACK? Reply To: How To Receive very long and complex ACK?

#13060
Jens Plappert
Participant

Here are two versions i tried:

VERSION 1, trying to be a general “onReceive”, works sometimes

read&h0D&h0D&h0A&h0A&h0DFW version:V1.1.105&h0A&h0DOut01: In01, Out ON , CEC OFF, &h0A&h0DOut02: In03, Out ON , CEC OFF, &h0A&h0DOut03: In04, Out ON , CEC OFF, &h0A&h0DOut04: In02, Out ON , CEC OFF, &h0A&h0DEDID mode: default&h0A&h0DEcho OFF&h0D&h0AP
// Nach senden von “read” kommt folgendes als Antwort:
//
//FW version:V1.1.105
//Out01: In01, Out ON , CEC OFF,
//Out02: In02, Out ON , CEC OFF,
//Out03: In03, Out ON, CEC OFF,
//Out04: In04, Out ON, CEC OFF
//EDID mode:default
//Echo OFF
//Pod OFF
//Button ON
//Command OK

Dim ReceiveStr as string
Dim TestStr as String
Dim LineArr() as string
ReceiveStr = ioResult
//die Antwort vom Switcher ist buggy, mal sendet er CR LF, mal LF CR (macht keinen Sinn)
//daher checkt der Empfang nur auf OK als ACK (kommt ganz am Ende als Command OK vor) und hier werden die CR nochmal von Hand abgeschnitten
//Parsen dann Anhand von nthfield, Trennzeichen “:”Empfang sehr unregelmaessig und lan, aber wenn der Hexwert fuer “Command OK” mal erkannt wird, funktioniert der Rest

ReceiveStr = ReceiveStr.ReplaceAll(chr(13),””)
ReceiveStr = ReceiveStr.ReplaceAll(chr(10),””)

dim FW_Ver, ReadOut1, ReadOut2, ReadOut3, Readout4 as string
FW_Ver = mid(ReceiveStr.nthfield(“:”,2), 0,9)
ReadOut1 = mid(ReceiveStr.nthfield(“:”,3), 5,1)
ReadOut2 = mid(ReceiveStr.nthfield(“:”,4), 5,1)
ReadOut3 = mid(ReceiveStr.nthfield(“:”,5), 5,1)
ReadOut4 = mid(ReceiveStr.nthfield(“:”,6), 5,1)

setDeviceVar(“Out_1”, ReadOut1)
setDeviceVar(“Out_2”, ReadOut2)
setDeviceVar(“Out_3”, ReadOut3)
setDeviceVar(“Out_4”, ReadOut4)
setDeviceVar(“FW_ver”, FW_Ver)

VERSION 2, Trying to be an ACK-Command parsing single lines (never works)

// Nach senden von “read” kommt folgendes als Antwort:
//
//FW version:V1.1.105
//Out01: In01, Out ON , CEC OFF,
//Out02: In02, Out ON , CEC OFF,
//Out03: In03, Out ON, CEC OFF,
//Out04: In04, Out ON, CEC OFF
//EDID mode:default
//Echo OFF
//Pod OFF
//Button ON
//Command OK

Dim ReceiveStr as string
Dim TestStr as String
ReceiveStr = ioResult
//die Antwort vom Switcher ist buggy, mal sendet er CR LF, mal LF CR (macht keinen Sinn)
//daher checkt der Empfang nur auf OK als ACK (kommt ganz am Ende als Command OK vor) und hier werden die CR nochmal von Hand abgeschnitten
//Parsen dann Anhand von nthfield, Trennzeichen “:”Empfang sehr unregelmaessig und lan, aber wenn der Hexwert fuer “Command OK” mal erkannt wird, funktioniert der Rest

ReceiveStr = ReceiveStr.ReplaceAll(chr(13),””)
ReceiveStr = ReceiveStr.ReplaceAll(chr(10),””)

dim Parameter, Value as String
Parameter = ReceiveStr.nthfield(“:”,1)
Select Case Parameter
case “FW version”
Value = ReceiveStr.nthfield(“:”,2)
Value = Value.mid(1,8)
setDeviceVar(“FW_ver”,Value)
case “Out01”
Value = ReceiveStr.nthfield(“:”,2)
Value = Value.mid(5,1)
setDeviceVar(“Out_1”,Value)
case “Out02”
Value = ReceiveStr.nthfield(“:”,2)
Value = Value.mid(5,1)
setDeviceVar(“Out_2”,Value)
case “Out03”
Value = ReceiveStr.nthfield(“:”,2)
Value = Value.mid(5,1)
setDeviceVar(“Out_3”,Value)
case “Out04”
Value = ReceiveStr.nthfield(“:”,2)
Value = Value.mid(5,1)
setDeviceVar(“Out_4”,Value)
end select

Scroll to top