[Gambas-user] Serial port data being changed ????
Benoît Minisini
gambas at ...1...
Tue Dec 8 19:03:38 CET 2009
> mike wrote:
> > I'm having trouble with Gambas and the serial ports.
> > Something is changing binary &h0d to &h0a when received
> > from a serial port. I noticed it in a program that I've
> > been working on that receives packets of binary data
> > from a microprocessor. I wrote a little test program to
> > demonstrate the problem and have included it below. I also
> > reprogrammed the micro to simply send &h0d as long a
> > pushbutton is held depressed. I have verified that the
> > correct data is indeed being sent using CuteCom to display
> > the binary data.
> > An interesting thing that I noticed when I ran CuteCom to
> > test the data being received is that if I close CuteCom without
> > closing the serial port first then run my Gambas program, it works
> > fine until I restart the system. If I close the port before closing
> > CuteCom then my Gambas program fails.
> >
> >
> > This is the code for the test program.
> >
> > ' Gambas class file
> > ' Using Gambas 2.18 on a system running
> > ' Fedora Kernel (26.30.9-102.fc11.x86_64)
> > ' It also fails running Gambas 2.11
> > ' on my laptop running
> > ' Fedora Kernel (2.6.27.25-78.2.56.fc9.i686)
> >
> > PUBLIC SUB Form_Open()
> >
> > ME.Center
> >
> > ' Setup the serial port - 9600,8,N,1
> >
> > ' SerPort1.PortName = "/dev/ttyS0" ' Both ports fail
> > SerPort1.PortName = "/dev/ttyUSB0" ' This the port I'll eventually
> > use SerPort1.Speed = "9600" ' because the laptop has no
> > serial port.
> > SerPort1.DataBits = "8"
> > SerPort1.Parity = "0"
> > SerPort1.StopBits = "1"
> > SerPort1.Open
> >
> > TextArea1.Text = SerPort1.PortName & Chr$(10)
> > END
> >
> > PUBLIC SUB SerPort1_Read()
> >
> > ' A microprocessor is connected to the serial port and
> > ' continuously sends &h0d (CR) as long a push button is held down.
> >
> > DIM InByte AS Byte
> >
> > READ #SerPort1, InByte
> > TextArea1.Insert(Hex$(InByte) & " ")
> > ' The textarea displays a series of "A " (LF) instead of "D " (CR)
> > END
> >
> > PUBLIC SUB ExitBtn_Click()
> >
> > SerPort1.Close
> > QUIT
> > END
> >
> > PUBLIC SUB ClearBtn_Click()
> >
> > TextArea1.Clear
> > END
>
> This is a Linux thing. Not Gambas. The icrnl flaf is set as standard.
> Easiest way is to use stty to change it.
>
> SHELL "stty -F " & SerPort1.PortName & " -icrnl"
>
I'm not a serial port user at all, and I find that behaviour a bit strange.
Would it be useful to make a property for that? Or maybe it does already exist
in the SerialPort class, and I didn't see it.
--
Benoît Minisini
More information about the User
mailing list