2012-04-05 11 views
1

私は、シリアルポートに書き込むための時間を探していました。私が見つけたすべての方法で、私は実装できませんでした。 Recvfrom()関数で現在使用しているプログラムでは、あらかじめ作成されたヘッダーを無効にする必要があります(問題があるかどうかわかりません)。ですから、私が基本的に求めているのは、シリアルポート経由で変数を送信する方法があるかどうかです。もしそうならば、最も簡単な方法は何でしょうか。シリアルポートへの書き込み(C++/Windows)

+0

ここではいくつかの説明が参考になると思います。 'recvfrom'はソケットで使われます。シリアルポート(Windowsでは)から読み込むには、通常は 'ReadFile'などを使用します。あなたは本当にネットワーク接続、シリアルポート、または(おそらく)シリアルポート経由でソケット接続を作成するSLIPやPPPのようなものを扱っていますか?また、タイトルには書き込みがありますが、「recvfrom」は読み取り用です。 –

+0

[Boost.ASIO](http://www.boost.org/libs/asio/)を使用することをお勧めします。[シリアルポートのネイティブサポート](http://www.boost.org/doc/html/ boost_asio/overview/serial_ports.html)。 [Here](http://dl.dropbox.com/u/10282384/asio_presentation_with_story.pdf)は、BoostCon 2010のスライドで、ASIOを適切に使用する方法の優れた概要を示しています。 – ildjarn

+0

申し訳ありませんが、Recvfromは、ネットワーク経由で送信された仮想マシンから別の変数を受け取ることでした。 – Linked

答えて

3

プリコンパイルされたヘッダーは実際問題ではありません。ライブラリーを構築するのではなく、プロジェクトに直接他のコードを組み込む場合、そのコードに#include stdaxf.hを追加する必要があります。または、.hと.cppファイルを直接コードファイルに保存します。

serial port directly in win32と話したい場合は、十分に簡単です。大きな問題はスレッディングを処理して新しいデータが到着するのを待っているだけですが、応答を待つだけで送信してそれを待ちたい場合は

0

qextserialportを使ってQTとのシリアル通信を行うことができます。

0

ここには、msdnドキュメントのrecvfrom()関数へのリンクがあります。サンプルも含まれています。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms740120%28v=vs.85%29.aspx 私はVS2010で問題なくコンパイルしました。

ただ、そうでなければ、コンパイルとリンクエラーのすべての種類に実行しますあなたのcppファイル内の非常に最初の行が

#include "stdafx.h" 

であることを確認してください。前に書いたことに従えば、プリコンパイルされたヘッダーは問題になりません。

希望に役立ちます。