首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

vxworks银屏输出

2013-01-04 
vxworks屏幕输出小弟新手一般来说用printf都是串口输出,或者shell输出,现在想在屏幕输出请问需要调用什么

vxworks屏幕输出
小弟新手

一般来说用printf都是串口输出,或者shell输出,

现在想在屏幕输出请问需要调用什么函数?

这个是不是要调用屏幕的输出函数??


大家有自己屏幕输出函数吗?请给一个我参考下,谢谢

[解决办法]
我理解你的这个屏幕就是PC的显示器设备,在VxWorks中是INCLUDE_PC_CONSOLE。

在VxWorks中,串口和控制台等都属于IO设备,都是用printf输出的,要输出的到什么地方去,取决当前标准输输入、输出和错误定位到那个上,你调用printf就输出到那个设备上。

看如下,是设置标准输入、输出的重新设置:
    ioGlobalStdSet (STD_IN,  consoleFd);
    ioGlobalStdSet (STD_OUT, consoleFd);
    ioGlobalStdSet (STD_ERR, consoleFd);
如果consoleFd文件描述符是一个串口的,你printf就到串口,如果这个pcConDevCreate(显示器设备),printf就输出到显示器。

[解决办法]
楼主关键的地方在于没有理解STDIN、STDOUT、STDERR、文件描述符fd等的概念。建议把这几个基本概念了解了就比较清楚了。
对于一个任务来说,它的标准输出定向到哪个设备,那打印的时候就打印到哪个设备上了。
vxworks下的任务可以单独用ioTaskStdSet()进行设置标准输入输出,上面说的ioGlobalStdSet()则可以把默认所有任务的标准输入输出定位到某个fd上
[解决办法]
在编译bootrom要用到target/config/all/bootconfig.c文件,在这个文件中的usrRoot函数有如下一段代码:
#ifdef INCLUDE_PC_CONSOLE
    pcConDrv ();
    for (ix = 0; ix < N_VIRTUAL_CONSOLES; ix++)
        {
        sprintf (tyName, "%s%d", "/pcConsole/", ix);
        (void) pcConDevCreate (tyName,ix, 512, 512);
        if (ix == PC_CONSOLE)           /* init the console device */
            {
            strcpy (consoleName, tyName);
            consoleFd = open (consoleName, O_RDWR, 0);
            (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE);
            (void) ioctl (consoleFd, FIOSETOPTIONS,
            OPT_ECHO 
[解决办法]
 OPT_CRMOD 
[解决办法]
 OPT_TANDEM 
[解决办法]
 OPT_7_BIT);
            }
        }
#endif  /* INCLUDE_PC_CONSOLE */

就是这个INCLUDE_PC_CONSOLE定义了,就可以了,这个宏定义在你bsp包的config.h下就行了。
你需要把这个文件好好看看,最后就是定义几个宏定义,

在上面这段代码之后,就有:
    ioGlobalStdSet (STD_IN,  consoleFd);
    ioGlobalStdSet (STD_OUT, consoleFd);
    ioGlobalStdSet (STD_ERR, consoleFd);

这个之后串口输出就可以到屏幕上了。



热点排行