Viz Pilot User Guide
Version 8.2 | Published July 23, 2018 ©
Communication Components
Use the Communication components to enable communication with other computers.
This section contains the following topics:
-
Com Port Component
-
Generic Com Port Component
-
Client Socket Component
Com Port Component
The TTWComPort component is used to send and receive data through a com port.
Notable Properties
-
Baud: Set the baud rate at e.g. 19200.
-
ComNumber: Set the com port number.
Script Example
The TTWComPort has the following methods for sending data:
-
.PutString("Hello"): sends the string "Hello"
-
.PutChar(Asc("A")): sends the character "A"
To receive data, data triggers must be registered on the TTWComPort. The data trigger will be fired whenever the incoming data matches a given trigger.
Tip: A protocol message can start with "START" and end with "END". Register "START" and "END" as triggers so that the user is notified whenever the incoming data matches either "START" or "END".
To register a data trigger call the AddDataTrigger function of the TTWComPort. The method is like this:
AddDataTrigger(trigger_text, case_sensitive): The trigger_text is the text to match and case_sensitive is a boolean value. The result value of the function is a trigger handle that should be stored. In this example it is named like this:
SOHDataTrigger = TWComPort1.AddDataTrigger(SOHText,
false
)
EOHDataTrigger = TWComPort1.AddDataTrigger(EOHText,
false
)
OnTriggerData(CP, TriggerHandle): Is called whenever the incoming data matches one of the triggers. The TriggerHandle contains the handle of the trigger that matched the trigger data. It can be tested like this:
if
TriggerHandle = SOHDataTrigger then
msgbox
"SOH received"
end
if
if
TriggerHandle = EOHDataTrigger then
msgbox
"EOH received"
end
if
The OnTriggerData only tests that the incoming data matches one of the registered triggers. To receive the actual data use the event called OnTriggerAvail. This event is called whenever there is new incoming data. The event looks like this:
OnTriggerAvail(CP, Count), where count is the number of new characters received.
Implement this function to gather all the incoming data:
Sub TWComPort1TriggerAvail(CP, Count)
\q---- Data is available, read it into the sMessage buffer----
for
i=
0
to Count-
1
sMessage = sMessage & Chr(TWComPort1.GetChar)
next
End sub
Generic Com Port Component
TTWGenericComPort is a specialized version of the TTWComPort and has a predefined start and end of message characters, 0x01 and 0x04 respectively, and also a start of transmission character 0x02.
Events
It also has an event called OnDataAvailable that is triggered whenever a new message is received. The event looks like this:
-
OnDataAvailable(Sender, MessageHeader, StringList)
-
Sender: Is the TTWGenericComPort component
-
MessageHeader: Is the data between 0x01 and 0x02.
-
StringList: Is a TstringList with the data between 0x02 and 0x04. Each field in the data is separated with a pipe character ’|’.
A message looking like this:
-
0x01
'My header'
'Field1|Field2|Field3'
0x04
would cause the OnDataAvailable event to be triggered and the MessageHeader would contain \qMy header' the StringList would contain the strings:
Field1
Field2
Field3
The StringList items can be accessed like this:
for
i:=
0
to StringList.Count-
1
msgbox StringList.Strings(i)
next
Client Socket Component
The TClientSocket component is used to connect to a TCP/IP server. It manages the connection when it is open, and terminates the connection when the template is through.
Notable Properties
-
Host: Host name or IP address of the server to connect to.
-
Port: Port used to connect to the server.
-
Active: Indicates whether the socket connection is open and available for communication with other machines.
Basic Methods
-
Open: Call Open to initiate the socket connection. Open sets the Active property to True.
-
Close: Call Close to shut down the socket connection. Close sets the Active property to False.
-
Socket.SendText(<Text>): Use Socket.SendText to write a string to the socket connection.
Script Example
Below is an example showing how to use the TClientSocket component to send a few commands to Viz Engine.
Trying to connect to the host specified:
Sub cbConnectClick(Sender)
ClientSocket1.Active = False
ClientSocket1.Host = txtHost.Text
ClientSocket1.Active = True
End sub
A valid connection is established. Enable the send button:
Sub ClientSocket1Connect(Sender, Socket)
cbSend.Enabled = True
End sub