Serial Data Source usage
I wonder if Serial Data Source can communicate with a device with the following format.
Request Packet Format:
ID# + Length + Command + Address + CS
Each item is one byte
ID# : Device ID #
CS: Check Sum
Receive Packet Format:
ID# + Length + Command + Reply Data + CS
ID# (1 byte): Echo of Request
Length (1 byte): 8 or 132
1 Byte 1 Byte 1 Byte 1 to 128 Bytes 1 Byte
Command (1 byte): Echo of Request
CS: Check Sum
Reply: 4 or 128 Bytes
What are the Message Terminator, Message Regex, Point Identifier Index in this case ?
How to configure it ?
I suspect it isn't possible. The checksum is probably not a standard value that you can use to delimit one message from another, and you cannot use a captured piece of a regular expression to define a length argument later in the same regular expression.
You could use it to send to the devices. What is the form of the checksum? Some arbitrary 8 bits?
Your best bet is to just write your own serial parser module, or we are of course available to write this sort of module for some development money to cover the cost of our time.
It may actually be a simple code modification. We could just run the regex twice to capture the length argument the first time and capture values from a second run. This module's source is public, so you could attempt this yourself. You will also need to remove the message terminator from datasource validation and a few other places, if you do this.
If I make the request packet to be fixed data, CS is fixed too. Can the Serial Data Source works in this case ?
Sending the data (what I'm thinking of as the request) is not the issue. You could send any data by using the Point Identifier in the data point details as the Device ID # and setting values to that point. Unless the data returning from the device also is fixed (which would probably make it uninteresting) the checksum will not be fixed and we'll still have a problem of telling one message from the next, or knowing if we've finished reading a message.