本帖最后由 fe07fe 于 2012-1-4 21:33 编辑
ucos-vc版的与ucos提供源码有很大区别,不是在应用程序上,而是与编译上的一些代码,比如:
void VCInit(void)
{ HANDLE cp,ct; Context.ContextFlags = CONTEXT_CONTROL;
cp = GetCurrentProcess(); //得到当前进程句柄
ct = GetCurrentThread(); //得到当前线程伪句柄
DuplicateHandle(cp, ct, cp, &mainhandle, 0, TRUE, 2); //伪句柄转换,得到线程真句柄
}
这完全是win32下的命令窗口程序,这个应该是获得句柄转化的ucos能用的指针,这个vc版并不显示命令窗口彩色模式,根据vc版那个就一个文件管理程序,在输入命令停留,比如scanf这样的函数,我觉得是阻塞的,windows不释放,ucos可能就不可能实现多任务调度,还有vc版的输出函数是printf函数,而bc版的用dos方式:
void PC_DispStr (INT8U x, INT8U y, INT8U *s, INT8U color)
{ INT8U far *pscr;
INT16U offset;
offset = (INT16U)y * DISP_MAX_X * 2 + (INT16U)x * 2; /* Calculate position of 1st character */
pscr = (INT8U far *)MK_FP(DISP_BASE, offset);
while (*s) { *pscr++ = *s++; /* Put character in video RAM */
*pscr++ = color; /* Put video attribute in video RAM */ }
}
包括位置,字符,颜色等参数,我对vc版的ucos很怀疑,大家有何看法。
|