Forum: Ruby serial port connection

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C139263a68500ee2346ca5d03d81c306?d=identicon&s=25 Sangeeta Huddar (sangeeta)
on 2009-03-13 07:55
Hi ,
  currently i m using ruby telnet for connecting to HW board but
now i  want to switch to serial port
for the same i have downloaded the
http://rubyforge.org/frs/?group_id=61&release_id=308 and put the
serial.so at /ruby/lib/ruby/1.8/i386-mswin32

now i want to use this and access the board .i tried d simple ways i
could think but nothing worked :(
can anyone help me with simple program to use serial.so
or is there any other way i can connect to board via serial port


thanks in advance,
-sangeeta
3b348bc837b5b409c6f5656fa59b5b34?d=identicon&s=25 B. Randy (randy)
on 2009-03-13 15:51
Hello,
Very intersting ... I'll try it late.
Well, I suppose that you are under Win$ and you must notice that the
SERIAL link is a "funny" game.

1 - Use a modem-cable, to link the two RS232 ports of your PC or an
other RS232 on a other PC.

2 - Test with classics tools the communication. On Win$, there is "Hyper
Terminal", any other kind of tool is good. On Linux, "minicom" for
example. Configure the two tools : same speed, no hardware handshaking,
no software handshaking, same parity, same stop-bits.
After, when you type some words in one window, you must see the text in
the other. At this point, your link is good.

3 - Replace one of the tools (Hyper Terminal, minicom) by your Ruby
code.
Try to send some text. I'll take the example from :
http://ruby-serialport.rubyforge.org/ and make some modifications.

 require 'rubygems'
 require 'serialport'
 sp = SerialPort.new "COM1", 9600, 1, NONE
 sp.write "Hello world !"
 puts sp.read

You should see the text on the new window. At this point, the soft is
good.

You can play with a modem too.

4 - For you HW. I don't know the kind of your HW, so I'll be "large".
Don't forget to verify the protocol of your HW board. Some HW wants some
special escape caracters before and after the message, or special
sequence for initiate the link, or want work only in dialog mode. In
this later case when you send something you must read something, if you
don't make this the HW will block.

Sangeeta Huddar wrote:
[...]
> now i want to use this and access the board .i tried d simple ways i
> could think but nothing worked :(
[...]
> can anyone help me with simple program to use serial.so
> or is there any other way i can connect to board via serial port
> thanks in advance,
> -sangeeta
3b348bc837b5b409c6f5656fa59b5b34?d=identicon&s=25 B. Randy (randy)
on 2009-03-13 18:06
Oops ! Sorry there is a mistake.

1 - Use a NULL-MODEM cable , to link the two RS232 ports of your PC or
an
other RS232 on a other PC.

B. Randy wrote:
> Hello,
> 1 - Use a modem-cable, to link the two RS232 ports of your PC or an
> other RS232 on a other PC.
A2022fb36bd45c8042f5952586e4608f?d=identicon&s=25 Stalin Thangaraj (stalin)
on 2009-06-30 12:44
B. Randy wrote:
> Hello,
> Very intersting ... I'll try it late.
> Well, I suppose that you are under Win$ and you must notice that the
> SERIAL link is a "funny" game.
>
> 1 - Use a modem-cable, to link the two RS232 ports of your PC or an
> other RS232 on a other PC.
>
> 2 - Test with classics tools the communication. On Win$, there is "Hyper
> Terminal", any other kind of tool is good. On Linux, "minicom" for
> example. Configure the two tools : same speed, no hardware handshaking,
> no software handshaking, same parity, same stop-bits.
> After, when you type some words in one window, you must see the text in
> the other. At this point, your link is good.
>
> 3 - Replace one of the tools (Hyper Terminal, minicom) by your Ruby
> code.
> Try to send some text. I'll take the example from :
> http://ruby-serialport.rubyforge.org/ and make some modifications.
>
>  require 'rubygems'
>  require 'serialport'
>  sp = SerialPort.new "COM1", 9600, 1, NONE
>  sp.write "Hello world !"
>  puts sp.read
>
> You should see the text on the new window. At this point, the soft is
> good.
>
> You can play with a modem too.
>
> 4 - For you HW. I don't know the kind of your HW, so I'll be "large".
> Don't forget to verify the protocol of your HW board. Some HW wants some
> special escape caracters before and after the message, or special
> sequence for initiate the link, or want work only in dialog mode. In
> this later case when you send something you must read something, if you
> don't make this the HW will block.
>
> Sangeeta Huddar wrote:
> [...]
>> now i want to use this and access the board .i tried d simple ways i
>> could think but nothing worked :(
> [...]
>> can anyone help me with simple program to use serial.so
>> or is there any other way i can connect to board via serial port
>> thanks in advance,
>> -sangeeta

Hello,
         I installed the gem and ran the code. Message was written
successfully. But I can't read the written data. It is waiting there.
The device I opened was /dev/ttyS0. Help me to read the data from serial
port.

Thanks,
Stalin .T
86ac8ee8e474b775b482c24b9846a624?d=identicon&s=25 Axel (Guest)
on 2009-07-01 10:20
(Received via mailing list)
Hello,

I never used serial-port communication with Ruby, but I collected some
informations on this. (It's likely that I'll need it in the future...)

Maybe, the following is usefull for you:

"
  #    ...All I had to do was set a seemingly
  #    arbitrary read_timeout value.  With the timeout,
serialport.gets just returns
  #    whatever was in the input buffer.
"

My collection:


###########################################################################
  # 2008-12-08: According to comp.lang.ruby, there is no easy-to-use
library,
  # for serial port usage under windows. But: This should work:
  #   http://grub.ath.cx/win32serial/
  #   which worked fine on my system (Windows XP sp3, using cygwin
ruby, but I
  #   think it'll work with the one-click version of Ruby)
  # Small, but must be compiled first. Compilation made problems,
according to
  # comp.lang.ruby
  #
  # 2009-06-09: Somebody got library working (comp.lang.ruby,
2008-06):
  #    Nevertheless, it seems to be working today!  All I had to do
was set a seemingly
  #    arbitrary read_timeout value.  With the timeout,
serialport.gets just returns
  #    whatever was in the input buffer.
  #
  # Other thread (2008-06):
  #   ...in my experience Ruby serialport library for Windows is in
most cases
  #   not usable. I suppose the problem is Ruby's implementation of
threads
  #   (green threads) under Windows.
  #
  #   For serial communication under windows I now use a
RS-232/422/485
  #   connections over Ethernet (i.e. Ethernet to serial) - so from
windows
  #   (Ruby) perspective I use TCP/IP communication which works fine.

Regards,
Axel
This topic is locked and can not be replied to.