ここから本文です
ブログを始めました・・・

書庫全体表示

同じ日に2度書くと言うことは訂正があるからです。
結論から申しますと普通ユーザーにし優先順位を上から2番目の
 HIGH_PRIORITY_CLASS にしてもデータの取り零しは発生しません
でした。取り零しの原因は受信処理ループにある下の三行でした。
printf は結構なリソース食いで速度の足を引っ張ります。

for (i = 0; i < (int)dwRead; i++)
printf("%02X", buf[i]);
   
printf("\n");

デバッグ用のコードでバグを発生させてるとはトンマで、すみません。

HIGH_PRIORITY_CLASS の設定は下を参考に適切な位置に入れて下さい。
なお製作29のコードでも動きましたけど以前のコードも動きました。
危うくコードを複雑して失敗する寸前でした。確かにwindowsとLinux用
ではドライバで大きな違いはなく(多少はLinuxが使い易いですけど)
実行してるパソコンの速度(性能)が大きく影響してました。

if (COMPORT == -1){

printf("no com port installed \n");
}

else{
printf("com port number is %d\n", COMPORT);

}


HANDLE hProcess;

hProcess = GetCurrentProcess();
if (SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS))
printf("SetPriorityClass: Success\n");
else 
printf("SetPriorityClass: Error\n");

本文はここまでですこのページの先頭へ
みんなの更新記事