• 締切済み

RS232C非同期通信初期化でエラー

通信相手の装置が500ms周期で永久的に送信していた場合、当方のパソコン を再起動して通信ソフト(WIN32API)を起動すると"CREATEFILE"でエラーが発生して接続できません。戻り値は0xFFF...FF(-1)です。 通信相手を停止した状態でパソコンを再起動して通信ソフトを起動すると 正常に接続できます。どの様に対処すれば良いのかどなたか教えて下さい。 OS:WindowsXP 通信手順は無手順、100BYTEデータ

みんなの回答

  • BIGT
  • ベストアンサー率42% (12/28)
回答No.3

定義は確か、winerror.hにあったと思います。

参考URL:
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_formatmessage.htm
gotn64
質問者

お礼

返信有難う御座います。winerror.hがありましたのでgetlasterror実行してみます。

全文を見る
すると、全ての回答が全文表示されます。
  • BIGT
  • ベストアンサー率42% (12/28)
回答No.2

GetLastError()の戻り値を調べてみてください。

gotn64
質問者

補足

返信有難う御座います。 getlasterrorで取得したエラーコードの意味説明はどこにあるかご存知でしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • AnalHare
  • ベストアンサー率8% (9/110)
回答No.1

>>通信相手を停止した状態でパソコンを再起動して >>通信ソフトを起動すると正常に接続できます。 これでいんじゃないの? もしこれがいやであるなら エラー処理を適切に対応させた通信プログラムを作成しないとだめです

gotn64
質問者

補足

返信有難う御座います。 通信相手の装置は運用上停止することができません。 故障か停電にならない限り停止しない通信機器です。 エラー処理は、CREATEFILE後(OPEN)でしたら知っているんですが なぜ、ハンドルが取得できないかわかりません。昔のようにシリアルコントローラ(8251)を直接イニシャルできれば簡単なんですが、Win32APIでは?です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • RS-232C

    パソコンからシリアル通信で制御したい装置が2台あります。どちらも特殊装置でパソコンから直接は接続できず、間に変換回路を自作します。 変換回路はそれぞれ違います。 両方の通信が重なることはなく、通信のタイミングはパソコン側で制御可能です。 この様な場合、パソコン側で拡張ボードを使い232Cのportを増やす方法が考えられますが、232Cの相手側(変換回路側)で二系統に分離することは可能でしょうか? 拡張I/Oボードは使いますので、分離信号を出力することは可能です。 どちらが良いか、また二系統に分けるICなど、ご存知の方、教えてください。

  • VB2005でシリアル通信(RS-232C)

    全くの初心者です。 オリジナルの計測装置とそれ用のソフトを作成することになりました。 ソフト作成の前にハードとの通信仕様を考えているのですが、 下記の点がよくわからず、どなたかご教示いただけないでしょうか。 ・RTSをフロー制御でなく、通信の一部(ハードへの命令信号)して使用したい。(データ送受信と全く独立してRTSをオン・オフしたい) ・調べたところ、EscapeCommFunctionが関連ありそう ・VB2005 express editionでEscapeCommFunctionのAPI(?)が使えるでしょうか。また、他に方法があるでしょうか ・また、Excel(2000)のVBAで同様のことが可能でしょうか。 よろしくお願いいたします。

  • VB6のRS232C通信で75bpsは可能ですか?

    WinXP VB6 にて開発をしています。 RS232Cで通信する必要があり、相手側のボーレートが75bpsとのことです。 しかし標準COMポートでは、最低は110bpsしかサポートされておりません。 デバイスマネージャのCOMポートを確認したところ、75bpsにて設定が出来ますので、 WinXP自体は対応されていると思います。 この状況でどうすれば通信が可能でしょうか? たとえば。 このソフトをインストールしたらVBでCOM通信ツールが使える? DLLを作ればいい?? API関数がある?? もしくはこの質問サイトにはプログラミングの猛者がいる。そっちで聞いてみれば? というようなサイト、ご存知でしたら教えて下さい。

  • Visual Basic 6.0でWin32APIを用いてRS-232

    Visual Basic 6.0でWin32APIを用いてRS-232Cで通信するプログラムを作っています。 CreateFile()でポートを開き、ハンドル番号を得て、プログラム終了前にそのハンドルを指定してCloseHandle()シリアルポートをクローズします。 ところが、何らかの原因でそのハンドルのクローズを行わなかった場合(例えば、デバッグ中にプログラムを終了させる)、シリアルポートは開っぱなしのようで、再度プログラムを実行しようとするとCreateFile()でポートを開くことが出来ません。 この状態は、VB6を再起動しない限り続きます。 そこでお聞きしたいのですが、プログラム上で、現在シリアルポートを開いているハンドル番号を知る方法はあるのでしょうか? 開いたときにメモするのも煩わしいため、なんとかならないかと悩んでいます。 どうぞよろしくお願いします。

  • RS232C無手順通信の英語用語

    こちらはPLC、相手(客先)はパソコンとでRS232C無手順通信を行う仕事がたまにあります。客先は主に東南アジアですが、英文でメールでの仕様確認を行います。いつも旨く伝わら無いのは、送受信データの前後に付ける名称を英語で(この業界の相手に判る専門用語でも良いです)教えて下さい。 いつもメールでの通信仕様決めに苦労してます。 国内のPLCメーカーでも下記の様に各社言い方が異なっています。 例えば、三菱は先頭データ、受信完了コード     オムロンはスタートコード、エンドコード     キーエンスはヘッダ、デミリタ といった具合です。 無手順通信は英語では”Asynchronous”で良いと思いますが。 以上宜しくお願い致します。

  • 拡張したRS485通信ボードである条件下にて通信タイムアウトエラーが発

    拡張したRS485通信ボードである条件下にて通信タイムアウトエラーが発生する。 開発環境:VisualBasic6.0(SP6) PC:WinXP PCにRS485通信用のPCIボード(Win32API対応)を増設しました。ポートの割り当てはCOM3、4、7、8となっています。VB6で計測器との通信プログラムを作成しました。 開発環境がインストールされてあるPC上で、開発ユーザーがログインして作成したソフトの実行ファイルを起動して使用する際には、正常に通信しております。 しかし、PC起動後に他ユーザーがログインして使用すると、通信タイムアウトエラーが発生してしまいます。ポートのオープンとボーレートの設定まではうまく出来ているようです。ただ、PC起動後に開発ユーザーがログインしてログオフし、他ユーザーがログインして使用すれば問題なく通信します。 原因がまったく分からず、困っております。どなたかご教授下さい。

  • RS232C通信ポート(COM1)が開かない

    Windows2000をシステムとする、旧型 IBM Think Padを使って通信ポート(9ピン)に、RS232C クロスケーブルで 富士電機プロコン(シーケンサー)と接続し、ONLINEにしたいのですが、<通信ポートをオープンできません>というメッセージが表示され、接続されません。 それで、Windowsのデバイスマネイジャーで、パソコン側の通信ポート(COM1)のプロバティをみると、<このデバイスは正常に作動しています。>とあります。 富士電機のサポートセンターに状況を問い合わせた所、パソコン本体側にエラーと思われるとの回答でした。 復旧の仕方がわかりません。 どなたさまかご教示くだされたく、お願い申しあげます。 使用状態 パソコンの使用状況、ウィルスチェッカー:ESET Smart Security 4 インストール。インターネットは、ドコモFomaの データ通信をUSBに接続してアクセス。 RS232C通信ポートは、富士プロコンのみで使用しています。 その他設定  1.アプリケーションソフトの<通信ポート設定>     PCとのポート(P): COM 1    ポートの設定(M): ビット/秒(B) 19200   データビット(D): 8     パリティ(P): なし               ストップビット(S): 1    フロー制御(F): なし    2.ローダアダプタのディップSW設定 ⇒ 1,2,3,4,5,6 OFF 7,8 ON 即ち ☆パソコンローダモード     ☆データビット: 8   ☆パリティビット有無: 無           ☆パリティビット奇偶: 奇数  ☆ボーレート: 19200    

  • RS232C通信ポート(COM1)が開かない

    カテゴリー <その他>でアップした質問を <Windows2000、NT>のカテゴリーに 再アップさせていただきます。 Windows2000をシステムとする、旧型 IBM Think Padを使って通信ポート(9ピン)に、RS232C クロスケーブルで、 富士電機プロコン(シーケンサー)と接続し、ONLINEにしたいのですが、<通信ポートをオープンできません>というメッセージが表示され、接続されません。 それで、Windowsのデバイスマネイジャーで、パソコン側の通信ポート(COM1)のプロバティをみると、<このデバイスは正常に作動しています。>とあります。 富士電機のサポートセンターに状況を問い合わせた所、パソコン本体側にエラーと思われるとの回答でした。 通信ポートのパラメータが変わったのか、それとも別の理由なのか、復旧の仕方がわかりません。 どなたさまかご教示くだされたく、お願い申しあげます。 <ThikPadパソコン使用状態> システム : Windows 2000 Service Pack4 ウィルスチェッカー:ESET Smart Security 4 インストール。 インターネットはドコモFomaのデータ通信アダプタを、USBに接続してアクセス。 RS232C通信ポートは、富士プロコンのみで使用しています。 <プロコン PLC 通信設定>  1.アプリケーションソフトの<通信ポート設定>       PCとのポート(P): COM 1     ポートの設定(M): ビット/秒(B) 19200  データビット(D): 8    パリティ(P): なし  ストップビット(S): 1   フロー制御(F): なし    2.ローダアダプタのディップSW設定 ⇒ 1,2,3,4,5,6 OFF 7,8 ON      即ち ☆パソコンローダモード     ☆データビット: 8   ☆パリティビット有無: 無       ☆パリティビット奇偶: 奇数  ☆ボーレート: 19200 <ケーブル>   パソコン~ローダアダプタ : 9ピン、25ピン RS232Cクロスケーブル、                   富士からは市販クロスケーブル使用のこととされ、通信データの接続                   ピン番号のみ公開。    ローダアダプタ~PLC  : 富士電機提供 専用ケーブル <PLCアプリ 使い勝手>   2ヶ月前までは、今回不具合のパソコン、RS232Cケーブル接続で、問題なくPLCとオンラインにな  っていた。

  • RS-232Cケーブルを利用して通信する古いゲーム

    ゲームの通信対戦設定の画面には「ケーブル対戦」「モデム対戦」とあります。 WindowsXP以降のマシン2台で動かしたいと思います。 PC-9801用のソフトなのでVirtualBoxは使えません。 Anex86を使えば起動はできます。 USBに接続するRS-232Cアダプターが売っていますので (例えば、 http://www.amazon.co.jp/dp/B007SI18VW ) 上記のアダプター*2、直結用rs232-c1本で接続できそうです。 (実際にやってみて認識しない可能性アリ) この方法では3本必要ですが、ケーブル1本だけで通信できるように する方法はないでしょうか? 前回の質問と回答 http://okwave.jp/qa/q9032037.html

  • bluetooth sppモードの通信時間

    bluetooth sppモードを使用して、10ms周期にてパソコンのアプリケーションにデータ送信を試みています。ボーレートは115200bpsです。 ただ通信処理が間に合わないのか、セッションが途中で切れてしまいます。 12ms周期ですと連続通信が可能です。 10msで連続通信できない理由、もしくは 10msで連続できる方法がわかればご教示お願いします。 送信側モジュール:マイクロチップ社 RN-42シリーズ パソコン側アプリケーション:vb2015 serialコンポーネント使用 以下の理由と考えているのですが原因がわからないです。 ・アプリケーションのイベントが処理しきれていない。 ・通信モジュールがオーバーフローを起こしている。