Cant open serial port properly ... I dont understand whats wrong ...

This message is related with

formatting link

I received from motorola the following answer: "This customer use Linux and have trouble to send 0x0A or 0x0D, this is due to his Linux I/O driver. Metrowerks CodeWarrior for HC08 is run under Windowes OS and it works fine on 908JB8 without any trouble on send 0x0A or 0x0D down."

can someone untar

formatting link
read the file rs232.c and try to find whats wrong between lines 49 to 71 ?

I really dont understand what could make opening the port in a wrong mode ...

You dont really need to comile ... just read my last post, my logbook p29 and my source file.

Thanks for any help

Reply to
Doublehp
Loading thread data ...

You may need to specify the translation mode as binary, as I'm not sure what the default translation mode under Linux is.

Mike Anton

formatting link

Reply to
Michael Anton

after 2h of chat on IRC, someone said me that i forgot to enter nonOPOST mode, so I added line 70 with the proper line as described on http://www.easysw.mike/serial/serial.html

/* canonical raw input */ vars->serial->c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); vars->serial->c_lflag &= ~OPOST; vars->serial->c_cflag |= (CS8); /* use 8bit data */ // term_prop->c_cflag |= (CLOCAL | CREAD); tcsetattr(fd, TCSAFLUSH, vars->serial);

but I still had the same bug ... so that people offered that very horrible hack: I put

sprintf(stty,"stty -a < %s",vars->device); system(stty);

after tcsetattr

Q: why isnt the line with ~OPOST enough ???

Reply to
Doublehp

OPOST needs to be applied to c_oflag (output modes), not c_lflag (local modes).

Cheers,

-Brian

--
Brian Dean, bsd@bdmicro.com
BDMICRO - MAVRIC & MAVRIC-II ATmega128 Based Dev Boards
http://www.bdmicro.com/
Reply to
Brian Dean

You are right. Thank you all of you for your help

Reply to
Doublehp

Actually, this is setting *non*canonical input (turning off ICANON). "Canonical" input means translating the terminal's idea of CR into Unix's idea (0x0A). By default, the serial port is configured to talk to a terminal, so flags like that are turned on.

See "man termios" for all the gory details. Yo ucan probably get what you want with "raw" mode: call tcgetattr(), cfmakeraw(), and then tcsetattr() to apply the modified attributes back onto the serial device. cfmakeraw() does almost the same thing you're doing in the code snippet you posted, except it modifies a few more flags.

--
      Wim Lewis , Seattle, WA, USA. PGP keyID 27F772C1
Reply to
Wim Lewis

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.