#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