討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 用最高效的方式管理MySQL 全方位AWS解決方案完整培訓
[ 回上頁 ] [ 討論區發言規則 ]
從Emulator轉到xsbase270上出問題
更改我的閱讀文章字型大小
作者 : yamamoto(迷糊書僮)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/24 上午 09:49:46
用VS2005的模擬器上編譯時都沒問題

但是在實驗版上執行時卻會卡在

WaitCommEvent()這個函式中

沒有回傳值

實驗版有拿兩塊測試過

也確定KERNEL中有設定開啟COMPORT的功能

網路上的方法也看了不少

卻找不到原因到底出在哪

如果不使用WaitCommEvent()

直接用readfile讀取的話

也讀不到東西

是不是comport沒有正確的開啟?(可是在wince的模擬器上執行卻沒有問題

以下是gps的code

UINT ReadFrameThread(LPVOID pParam)
{
CProjectV3Dlg *pDlg= (CProjectV3Dlg*)pParam;
HANDLE hComport ;
int recval=0,A=-1;
unsigned long rnum;
char Buffer[9048]={0};
CString XString,YString,TempString,Nullstring;
CString DeviceName;
DCB dcb;
DWORD dwCommStatus =0;
BOOL bResult;
CPoint pt,ReferencePt;
int dx = 0,dy = 0;



hComport = CreateFile(
L"COM1:",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);

AfxMessageBox(_T("PORTカ}アメ"));
if(hComport == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("ナェィ妺「アム"));

}
else
{

if(!SetupComm(hComport, 256, 256)){

AfxMessageBox(_T("Can't get the buffer of comport."));


}
else
{
//ォナァiDecive Control Block
ZeroMemory(&dcb,sizeof(dcb));
dcb.DCBlength = sizeof(DCB);
GetCommState(hComport,&dcb);
dcb.BaudRate = CBR_4800;
dcb.ByteSize = 8; // data size, xmit and rcv
dcb.Parity = NOPARITY; // parity bit
dcb.StopBits = ONESTOPBIT; // stop bit
COMMTIMEOUTS CommTimeOuts;
GetCommTimeouts(hComport,&CommTimeOuts);
CommTimeOuts.ReadIntervalTimeout=MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier=0;
CommTimeOuts.ReadTotalTimeoutConstant=50;
CommTimeOuts.WriteTotalTimeoutMultiplier=0;
CommTimeOuts.WriteTotalTimeoutConstant=50;
SetCommTimeouts(hComport,&CommTimeOuts);

if(!::SetCommState(hComport,&dcb))
{
::AfxMessageBox(_T("fail"));
}
else
{
if(!SetCommMask(hComport,EV_RXCHAR | EV_CTS | EV_DSR | EV_RING))
{
::AfxMessageBox(_T("SetCommMask Failure"));
}
else
{



while(1)
{

AfxMessageBox(_T("while start"));
TempString.ReleaseBuffer();
TempString= '\0';


Nullstring= '\n';

if(bResult = WaitCommEvent(hComport, &dwCommStatus, 0)==NULL)
SetCommMask(hComport, EV_RXCHAR);


if(bResult && (dwCommStatus & EV_RXCHAR))
{
do
{


recval = ReadFile(hComport,&Buffer,1,&rnum,0);
AfxMessageBox(_T("read"));
if(Buffer == Nullstring)
{
break;
}
else if(recval && rnum == 1){

TempString += Buffer;

}

}while(recval && rnum == 1);

TempString += '\0';
A = TempString.Find(L"$GPGGA");
if(A>=0)
{
XString=TempString.Mid(30,10);
YString=TempString.Mid(18,9);
TempString.ReleaseBuffer();
pDlg->ReadFrame(XString,YString);
}
}
}
}
}
}
}






CloseHandle(hComport);
hComport = 0;

return 0;

}
 板主 : 徵求中
 > WinCE/eVC - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - WinCE/eVC - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
WinCE/eVC
1 ChannelAyu 800 
2 770 
3 jonathan321 380 
4 lzx 220 
5 house 220 
6 ohyajack 160 
7 joe 130 
8 =悠= 120 
9 2338998 110 
10 阿偉 100 
WinCE/eVC
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125