On Thu, Oct 18, 2012 at 9:14 AM, Juan Pablo Carbajal
<ajuanpi+...@gmail.com> wrote:
> On Thu, Oct 18, 2012 at 12:31 AM, Juan Pablo Carbajal
> <ajuanpi+...@gmail.com> wrote:
>> Hello,
>>
>> I am observing weird behaviors and I couldn't pin down at which level
>> things are going bad. Using instrument-control 0.1.0 from Forge.
>> Running Ubuntu 12.04 64 bit
>> Linux 3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012
>> x86_64 x86_64 x86_64 GNU/Linux
>>
>> I am using serial communications. I am testing with a physical
>> loopback (RxD connected to TxD) in this USB2Serial adapter
>> https://www.sparkfun.com/products/718.
>>
>> Problem 1 [Ring bufffer?]:
>>   s = serial (); # 8-N-1
>>   srl_baudrate (s,9600);
>>
>>   srl_write(s,"hello")
>>   ans = 5
>>
>>   char(srl_read (s,5))
>>   ans = hello
>>
>>   char(srl_read (s,5))
>>   ans = hello
>>
>>   char(srl_read (s,15))
>>   ans = hellohellohello
>>
>>   char(srl_read (s,4))
>>   ans = hell
>>
>>   char(srl_read (s,6))
>>   ans = ohello
>>
>> It looks like as if the buffer is a ring buffer or is really big and
>> filled with "hello". Maybe flushing the input after reading will solve
>> the problem? Continued from the example before I got this
>>
>> Problem 2 [Hang after flush]:
>>   srl_flush (s, 1)
>>
>>   char(srl_read (s,5)) # This blocks as expected but ...
>>   srl_read: Interrupting...
>>   ans =
>>
>>   srl_write(s,"hello")
>>   ans =  5
>>
>>   char(srl_read (s,5)) # This also blocks!!!!
>>   srl_read: Interrupting...
>>   ans =
>>
>> The only way of getting things to work from this point on is to close
>> the port and open it again.
>>
>> Can anybody reproduce this? any suggestions of tests to run to see
>> whether the problem is at hardware level?
>>
>> I also tested with a virtual loopback (command "socat -d -d PTY:
>> PTY:", this is simpler than the suggestion in the wiki. I can update
>> that), I do not observe Problem 1, but I can't interrupt the second
>> call to srl_read
>>
>> s = serial("/dev/ptmx", 9600);
>> srl_write(s,"hello")
>> ans =  5
>> char(srl_read (s,5))
>> ans = hello
>> octave:5> char(srl_read (s,5))
>> srl_read: Interrupting...
>> srl_read: Interrupting...
>> srl_read: Interrupting...
>> srl_read: Interrupting...
>>
>>
>> Thanks
>
> Testing in Debian Squeeze 2.6.32-5-686 with the same hardware
> configuration doesn't show Problem 1
> Note that:
>
> - Ubuntu 12.04 uses kernel 3.2.0 and the driver controlling the adapter is
> ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
>
> - Debian Squeeze uses kernel 2.6.32 and
> ftdi_sio: v1.5.0:USB FTDI Serial Converters Driver
>
>
> In Debian the problem observed is the following (opening the port the
> same as before)
>> srl_write(s,uint8(127)); srl_read(s,1)
> ans = 127
>> srl_write(s,uint8(128)); srl_read(s,1)
> ans = 0
>
> Should it go up to 255?

Additional update.

Checking the code of srl_write.cc and srl_read.cc I noticed that while
srl_write writes "unsigned char" srl_read reads "char". Is this
intentional?

Additionally there is a C style cast in srl_write line 63. I assume it
should be a static cast and therefore it should be

buf[i] = static_cast<unsigned char>(data(i));

Or is there a reason why to do it the C way?

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to