RS-232Cインターフェースでは、送信線(TXD)、受信線(RXD)
が独立しているので全2重通信が可能と思われます。
パソコンのアプリケーションも含めた範囲で、
RS-232C全2重通信作成は可能でしょうか。
(Windowsのドライバか何かの制約で実現不可能な事がないか?)
※製作前の検討段階で実現可/否を見極めたく、
Windowsのドライバか何かの制約で実現不可能な事がないか
事前に知りたい。
<開発環境>
Windows XP SP2, Visual C++2005,
構成プロパティ「文字セット」=設定なし
送信・受信を別スレッドにし、オーバラップドIO使用することで可能です。
>パソコンでRS-232C全2重通信可能?
可能だが…(通信相手次第)
それってVC++の質問ですか?
相手側の機器とプログラムの作りようによって可能です。
まず、テストプログラムを作って試してみましょう。
> 送信・受信を別スレッドにし、オーバラップドIO使用することで可能です。
オーバラップドIOとは非同期のことかと思いますが、
もう一つ制御スレッドを設ければ同期IOでもいけるかなと思いますが、
どうでしょうか。
(送信スレッドは送信完了までWriteFile()ブロック、
受信スレッドは受信完了までReadFile()ブロック)
電文は、ASCIIデータ(16進数値文字0~9とA~Fのみ)
を STX、CR/LFで囲んだものです。
> 可能だが…(通信相手次第)
とりあえず、PC(VC++)どうしでの通信テストのみです。
(将来組込みマイコン相手にできるように。相手は全2重対応が前提)
>> 送信・受信を別スレッドにし、オーバラップドIO使用することで可能です。
>
> オーバラップドIOとは非同期のことかと思いますが、
> もう一つ制御スレッドを設ければ同期IOでもいけるかなと思いますが、
> どうでしょうか。
どうでしょうかもなにも、
そこまでアイデアがあるんならお試しコード書いて試してみればいい。
うまくいかなかったから聞くというのならわかりますが…
思いついたことは試さずに全部「どうでしょうか」と聞くつもりですか?
> ※製作前の検討段階で実現可/否を見極めたく、
> Windowsのドライバか何かの制約で実現不可能な事がないか事前に知りたい。
# 製作前の検討って、当然、先行調査とか含まれると思うのですが、
# 仕様面でということなら提供元にあたるのが確実で、
# 同時に、怪しいとことは検証コードなどでつぶしますよね。
#
# 検証コードはあくまで検証用であって、製作とは別物です。
#
# お絵かき以外の手を動かす作業を他人任せにしようとしてるようにしか見えないので、
# 望む回答は難しいと思います。恣意的に「動きます」とか「動きません」とか書かれる
# 可能性を考慮すると、自分で書く(or業務上の担当者に振る)のが安全だと思います。
皆様、ご教授・指摘ありがとうございます。
先行調査として試作コードは製作中です。
通信、VC++等々不慣れなもので、どんな仕組みにするかで悩んでます。
質問はその上でしています。
全2重通信、マルチスレッド等々になると、先行調査すら、
未熟者にはハードルが高いのです。
>送信・受信を別スレッドにし、オーバラップドIO使用することで可能です。
これを聞いたから、
>もう一つ制御スレッドを設ければ同期IOでもいけるかな
と思ったわけです。
その前は、シングルスレッドで試作しようと思ってました。
自身にとって大きな規模や高いハードルのものを試作しようとしたら、
どんな仕組みにするかが重要だと思います。
Banさん
他人任せのつもりじゃありませんので、ご容赦を!(^ ^;
># 仕様面でということなら提供元にあたるのが確実で、
自作PCソフト同士なので、提供元はありません。
解決済チェック付け忘れてました。