[PD] Fwd: Re: sending lists via [comport]

Christof Ressi info at christofressi.com
Sat Feb 1 01:39:49 CET 2020


As a side note:

you can of course design your own little protocol. Just be careful with 
something like this:

[length, data1, data2, ..., length, data1, data2, ...]

For this to work you need to know the start of the transmission and you 
can't recover from data loss because when you start parsing from a 
random position, you don't know what each byte actually means.

So it is generally safer to either choose one byte as a delimiter 
(probably with some kind of escape mechanism, like SLIP does) or reserve 
certain bytes as status bytes (like MIDI does). This way you can start 
listening to an already running stream of data and know exactly where a 
new packet begins.

---

Of course you can just send/receive the data as ASCII, where the 
delimiter probably would be \0 or \n.

If you only send data *from* the Arduino to Pd, you can easily use FUDI 
(Pd messages):

Serial.print("foo 1 2 3; bar 1 2 3;\n");

In Pd you just need to collect bytes to till you reach a newline (\n) 
and then send the resulting list of bytes to [fudiparse] and it will 
output the messages [foo 1 2 3( and [bar 1 2 3(.

Christof


On 01.02.2020 01:11, Christof Ressi wrote:
>
> Hi,
>
>> How do I get Arduino to send the complete values as integers instead?
>> And, how can I tell [pd] when a new data set of e.g. six values begins?
> Short answer: you need a protocol. Someone already mentioned SLIP. For 
> Pd there is an external called [mrpeach/slipenc] resp. 
> [mrpeach/slipdec] and for Arduino there are libraries like 
> https://github.com/bakercp/PacketSerial or 
> https://github.com/CNMAT/OSC (see SLIPEncodedSerial.h).
>
> Please read the following to understand the problem which SLIP and 
> similar protocols are trying to solve: 
> https://github.com/bakercp/PacketSerial/blob/master/docs/BACKGROUND.md
>
> It doesn't have to be SLIP, though. You can use any encoding/protocol 
> you like as long as both sides agree :-) I've even (ab)used MIDI 
> because it is quite compact and rather easy to parse.
>
> Christof
>
>
> On 31.01.2020 23:18, Dr. Maik Hester wrote:
>>
>>
>>
>>
>> -------- Weitergeleitete Nachricht --------
>> Betreff: 	Re: [PD] sending lists via [comport]
>> Datum: 	Fri, 31 Jan 2020 22:34:24 +0100
>> Von: 	Dr. Maik Hester <maik.hester at gmx.de>
>> An: 	hans w. koch <hansw.koch at gmail.com>
>> Kopie (CC): 	pd-list at lists.iem.at <pd-list at mail.iem.at>
>>
>>
>>
>> Dear list,
>>
>> the logic in the attached patch works fine, but I am still stuck at 
>> two different points:
>>
>> The Arduino sends each digit of the values as a two-digit ascii. How 
>> do I get Arduino to send the complete values as integers instead?
>>
>> And, how can I tell [pd] when a new data set of e.g. six values begins?
>>
>> Thanks
>> Maik
>>
>>
>> Am 29.01.20 um 00:00 schrieb hans w. koch:
>>> if the incoming data all have the same structure (i.e. the strings of numbers have the same lenght),
>>> you could group them in lists and then use unpack to sort their destinations.
>>> like in the patch attached
>>>
>>> hth
>>> hans
>>>
>>>
>>>> Am 28.01.2020 um 23:25 schrieb Dr. Maik Hester<maik.hester at gmx.de>:
>>>>
>>>> Dear list,
>>>>
>>>> does anyone know how to send the different values of each line from the
>>>> sample below to [comport] as a list, strip this list in [pd] and route
>>>> the values to their different destinations?
>>>>
>>>> The data comes via Arduino from a pixy cam.
>>>>
>>>> Here is a sample from Arduino's serial monitor:
>>>>
>>>> Detected 6
>>>>    block 0: sig: 2 x: 273 y: 36 width: 42 height: 5 index: 41 age: 18
>>>>    block 1: sig: 1 x: 272 y: 187 width: 36 height: 4 index: 37 age: 18
>>>>    block 2: sig: 1 x: 266 y: 151 width: 28 height: 4 index: 226 age: 71
>>>>    block 3: sig: 1 x: 274 y: 109 width: 20 height: 4 index: 155 age: 124
>>>>    block 4: sig: 2 x: 280 y: 48 width: 32 height: 2 index: 223 age: 72
>>>>    block 5: sig: 1 x: 240 y: 136 width: 24 height: 2 index: 52 age: 5
>>>>
>>>> At the moment [comport] receives all the numbers one after another (e.g.
>>>> 2  273  36  42  5  41  18 ...), so that it is impossible for me to tell
>>>> [pd] which number should go where.
>>>>
>>>> I kept checking the internet for a solution for several days which did
>>>> not bring me any further, so I hope that someone in the [pd] community
>>>> could give me a clou.
>>>>
>>>> Thanks
>>>> Maik
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> __
>>>> Dr. Maik Hester
>>>> Musiker, Musikwissenschaftler, Akkordeon-Restaurator
>>>> Himmelohstra├če 23
>>>> D-58454 Witten
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Pd-list at lists.iem.at  mailing list
>>>> UNSUBSCRIBE and account-management ->https://lists.puredata.info/listinfo/pd-list
>> --
>> __
>> Dr. Maik Hester
>> Musiker, Musikwissenschaftler, Akkordeon-Restaurator
>> Himmelohstra├če 23
>> D-58454 Witten
>>
>> _______________________________________________
>> Pd-list at lists.iem.at  mailing list
>> UNSUBSCRIBE and account-management ->https://lists.puredata.info/listinfo/pd-list
>
> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20200201/e23482c6/attachment-0001.html>


More information about the Pd-list mailing list