#99 Article 1138 Posted at 1996/09/08 22:06:58 by Mai (MAP2260) [COMM]
Subject: Re:*4 Q:Windows 通信ポートリセット /1134 ... /1131 /1130
というわけで、現在は、GetComErrorをwhileで何回も回すことでエラーを
解除してますが、なんか怪しいです。
WM_COMMNOTIFYを拾って、その内部でやるとちゃんと受信キューが消えるのに、
外側でやっても、次にWM_COMMNOTIFY内部にきた時に、キューが一杯になってます。
WM_TIMER辺りで、
if (GetCommError(ID,NULL))
PostMessage(HWND,WM_COMMNOTIFY,CN_RECEIVE,0)
とやって、
WM_COMMNOTIFYの方で、
if (wParam&CN_RECEIVE)
{
while (GetCommError(ID,NULL))
{
FlushComm(ID,1);
}
:
:(本来の受信ルーチン)
}
だとOKなのに、
WM_TIMERの方で、
while (GetCommError(ID,NULL))
{
FlushComm(ID,1);
}
だけだとだめ(^_^;)
なんか、Win32でまるっきり中身が変わってるみたいだし、3.1のシリアル
通信APIって、変なのでしょうか?
機種限定なので、ATのBIOSを呼んでやったほうが、取りこぼし無く動くのかな?
(COM1とCOM2、両方使ってるのが原因?)
Mai