[erlang-questions] Binaries
Bob Cowdery
bob@REDACTED
Tue Jun 19 18:53:44 CEST 2018
The first does nothing and the second hangs. It's not gen-serial that's
having a problem with it. It's sending it and giving ok but when decoded
in the radio which obviously I can't look at it isn't a valid command.
The encoding of <<16#14,16#50,16#00,16#00,16#01>> and <<20,80,0,0,1>> is
somehow different.
On 6/19/2018 5:37 PM, Danil Zagoskin wrote:
> That's how erlang part communicates with C part.
> https://github.com/tomszilagyi/gen_serial/blob/master/src/gen_serial.erl#L622
> -define(PACKET_DATA, $d).
>
> send(#gen_serial{port = Port}, Data) ->
> true = port_command(Port, [<<?PACKET_DATA:8>> | Data]),
> ok.
>
> Maybe port_command does not expect an improper list — try one of these:
> * gen_serial:bsend(P,[<<20,80,0,0,1>>]) % Your binary wrapped in a list
> * gen_serial:bsend(P,[20,80,0,0,1]) % data as list instead of binary
>
> On Tue, Jun 19, 2018 at 7:22 PM Bob Cowdery <bob@REDACTED
> <mailto:bob@REDACTED>> wrote:
>
> Thanks for all the suggestions. Still a little confused. The
> number is
> an integer, actually a frequency in Hz plus a command byte at the end
> which is being sent over a serial connection in hex format using
> gen_serial.
>
> This command works: gen_serial:bsend(P,
> <<16#14,16#50,16#00,16#00,16#01>>). where P is the open Port.
>
> However, when I use any of the methods to create a hex version
> they all
> end up with <<20,80,0,0,1>> which to my mind is the decimal equiv
> of above.
>
> If I fire that I get:
>
> 5> gen_serial:bsend(P,<<20,80,0,0,1>>).
> ** exception error: bad argument
> in function port_command/2
> called as
> port_command(#Port<0.470>,[<<"d">>|<<20,80,0,0,1>>])
> in call from gen_serial:send/2 (gen_serial.erl, line 624)
> in call from gen_serial:bsend/3 (gen_serial.erl, line 706)
>
> What is <<"d">> doing in there?
>
>
> On 6/19/2018 4:32 PM, Bob Cowdery wrote:
> > If I have a number, say 1450000001 and I want to represent that
> as a
> > binary in the form
> >
> > <<16#14,16#50,16#00,16#00,16#01>> what's the best way.
> >
> > I'm not sure what list_to_binary(integer_to_list(1450000001)) which
> > prints as <<"1450000001">> produces but I guess its 10 bytes not 5.
> >
> > BobC
> >
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> > http://erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
> --
> Danil Zagoskin | z@REDACTED <mailto:z@REDACTED>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180619/f30a2032/attachment.htm>
More information about the erlang-questions
mailing list