Search code examples
cembeddedvxworks

Redirect VxWorks Serial Input


I am trying to redirect all serial data to a process in VxWorks. Using the following code

fd = open("/tyCo/0", O_RDWR,0);
ioctl(fd, FIOSETOPTIONS, OPT_TERMINAL & ~OPT_7_BIT);
read(fd, line, 100);

gives the correct input, except the first character entered is not populated, but is printed to the terminal. So if I enter "Hello", "H" is printed out and line="ello". If I don't enter anything and hit the return key, I get a prompt from the VxWorks Shell.

I think that the VxWorks Shell is intercepting the first letter of the data. My guess is that I have to redirect STDIO to the new process only, but all the documentation I've found on that says to use ioGlobalStdSet() which is unavailable in VxWorks 6.4 RTP. How can I either redirect STDIO or kill the VxWorks Shell from my process?


Solution

  • Disabling the shell during VxWorks configuration and compilation removed the problem permanently. It is also possible to enter exit at the shell to temporarily disable it.