WinCE6 0串列埠列印函式彙總

2021-09-21 20:02:46 字數 3072 閱讀 1674

在wince系統啟動最開始,也就是eboot部分,會完成一定串列埠的初始化,以便在後面的工作中可以在串列埠中顯示很多資訊。這也是串列埠列印的最開始部分。

oemreaddebugbyteoemwritedebugbyteoemwritedebugstring

在eboot彙編跳轉到c語言的main函式後,在blcommon.c中的bootloadermain是第乙個c語言函式,這裡的初始化部分包含乙個oemdebuginit的函式,實現在main.c檔案中,裡面呼叫了oeminitdebugserial()函式,實現在\winceroot\platform\bspname\src\oal\oallib\debug.c裡,就是它完成了串列埠的列印實現,包括oemreaddebugbyte()、oemwritedebugbyte()、oemwritedebugstring()。

edbgoutputdebugstringkitloutputdebugstring

在bootloadermain實現過程中,還會經常見到兩個函式edbgoutputdebugstring()和kitloutputdebugstring(),這兩個函式的實現其實是一樣的,在\winceroot\public\commom\oak\inc\halether.**件中有如下定義:

#define edbgoutputdebugstring    kitloutputdebugstring

edbgoutputdebugstring()的實現在檔案\winceroot\public\commom\oak\drivers\ethdbg\edbgfrmt\format.c中,具體的實現如下,其實和printf的實現很類似,這裡就不做太多介紹了。

void edbgoutputdebugstring (lpcstr sz, ...) 

poutputnumdecimal((unsigned long)l); 

break; 

case 'u': 

poutputnumdecimal(va_arg(vl, unsigned long)); 

break; 

case 's': 

outputstring(va_arg(vl, char *)); 

break; 

case '%': 

poutputbyte('%'); 

break; 

case 'c': 

c = va_arg(vl, unsigned char); 

poutputbyte(c); 

break; 

default: 

poutputbyte(' '); 

break; 

break; 

case '\r': 

if (*sz == '\n') 

sz ++; 

c = '\n'; 

// fall through 

case '\n': 

poutputbyte('\r'); 

// fall through 

default: 

poutputbyte(c); 

va_end(vl); 

}

nkdbgprintfwoutputdebugstringw

nkdbgprintfw()函式同樣是在檔案\winceroot\public\commom\oak\drivers\ethdbg\edbgfrmt\format.c中實現的,實現**如下:

void nkdbgprintfw( 

const wchar *sz, ...) 

poutputnumdecimal((unsigned long)l); 

break; 

case 'u': 

poutputnumdecimal(va_arg(vl, unsigned long)); 

break; 

case 's': 

outputstringw(va_arg(vl, wchar *)); 

break; 

case '%': 

poutputbyte('%'); 

break; 

case 'c': 

c = va_arg(vl, unsigned char); 

poutputbyte(c); 

break; 

default: 

poutputbyte(' '); 

break; 

break; 

case '\n': 

poutputbyte('\r'); 

// fall through 

default: 

poutputbyte(c); 

va_end(vl); 

}

outputdebugstringw()函式其實是直接呼叫nkdbgprintfw()實現的。

void outputdebugstringw(lpcwstr fmt) 

retailmsgdebugmsg

這兩個函式是在bsp中最常見的了,在檔案

\winceroot \public\common\sdk\inc\dbgapi.h

中實現,兩者的實現是一摸一樣的,只是在不同的編譯條件下實現的效果不同而已,都是通過上面的

nkdbgprintfw()

函式來實現的。具體實現如下:

#define debugmsg(cond,printf_exp)     \ 

((void)((cond)?(nkdbgprintfw printf_exp),1:0))     

#define retailmsg(cond,printf_exp)\ 

((cond)?(nkdbgprintfw printf_exp),1:0) 

WinCE6 0串列埠列印函式彙總

在wince系統啟動最開始,也就是eboot部分,會完成一定串列埠的初始化,以便在後面的工作中可以在串列埠中顯示很多資訊。這也是串列埠列印的最開始部分。oemreaddebugbyte oemwritedebugbyte oemwritedebugstring 在eboot彙編跳轉到c語言的main...

VB6 0好用模組 1 0串列埠

vb6.0好用的串列埠模組類 使用方法如下 該函式功能將得到的com口進行從小到大排序寫入combobox public sub addcomforcombox comboxcontral as combobox dim i as integer dim str2com as string com字...

STM8串列埠列印除錯資訊

static void uart1sendmsg char msg,uint16 t length void myprintfascii char msg void myprintfint8 uint8 t msg,intlength intlength m for n intlength 1 n ...