ページ 11

C言語からの移植でハマっています。

Posted: 2007年11月28日(水) 21:02
by 初心者13号
RS232C通信のプログラムを書いています。
やりたいことはRS232Cで頻繁に受信するなかかなら、目的のデータを受信したら0.01秒で早く、(普段はあまりCPUに負荷をかけずに)処理したい。LF(&ha)受信でイベント処理をします。

実践コードモジュール [AB4]RS232C通信プログラム(ソース) kadushi様のコードではタイマーによるイベント受信になってしまうので使えませんでした。

理想的な解説したページを見つけました。
http://www.med.osaka-u.ac.jp/pub/anes/w ... ition.html

AB4に移植してみましたが、クラス処理の箇所で迷宮に入り、訳がわからなくなってしまいました。
色々試したりしたのですが、どうしても出来ませんでした。

本当にずうずうしいお願いなのですが、どなたか教えていただけませんか?
C言語も、クラスもよくわからいので、極力オリジナルに近い様に書きました。
AB5で書けば、簡略化できたと思いますが、頻繁にハングし使えませんでした。

Posted: 2007年12月18日(火) 19:13
by イグトランス
TSerialThreadクラスというものを使っていますが,これはBorland C++ Builder固有のものなので,ABでは使えないというわけです。やるとしたら,スレッドを作るという点でCreateThread関数が相当するものになりますが,TSerialThreadがどのような機能を持っているのかによって代替が難しいこともあると思います。

Posted: 2007年12月21日(金) 01:08
by ゲスト
Threadオブジェクトですね。VCLを除いて見てみましたが解読は挫折しました。
しかしCreateThreadとセフォマでなんとかなりそうな感じです。

Posted: 2007年12月24日(月) 13:42
by NoWest
ざっとプログラムを見た感じ、

単純にシリアル(COM)通信の非同期処理をサブスレッドを使って処理するだけのようですから
わざわざTThreadクラスからTSerialThreadを派生して何たらというものは必要ないはずです。


とりあえずはRS232C通信の非同期処理をプログラムを作成し
そいつをCreateThread関数で作成したスレッド内に置けばよいかと思います。

と、いうことで、その辺の解説しているサイトを探したんですが、あんまりないですね。
初心者13号さんが見つけたサイトが一番まともだと思います。