• 締切済み

リモートデスクtップ接続とRS-232C通信

サーバー(Windows2012Server)--(無線)--Windows10==(RS232C)==計量器 この接続間で、Windows10から計量値取得コマンドを計量器に投げるところで、 「デバイスが存在しない」(GetLastErrorで1167が返ってくる)となります。 ただし、本現象が必ず起きるわけではなく、1回/数日ぐらいのペースで発生 します。 本現象がおきるとWindows10でRDPで起動しているアプリケーションがフリーズ してしまいます。 対処のしかたでよい方法があれば、教授いただきたく。

みんなの回答

  • mabyos
  • ベストアンサー率52% (61/117)
回答No.7

今回の構成で、現象発生時にRDPのアプリケーションが固まってしまっていることから、RDP通信がうまくCOMの通信を転送できていない状況の為と考えられます。可能であれば無線LANを有線化する切り分けの実施が必要と思います。 2400bpsのボーレートに関して2秒のタイムアウトが適切かどうかはすみません。よくわかりません。

SuperMonkey2
質問者

補足

mabyos様 回答ありがとうございます。 毎回起きる現象でないことから、ハード面とソフト面の両面より追跡を行っています。 無線LANですが、他のマシンも無線LANで接続されており、環境的には問題ないかと考えられます。 今回の問題がおきているマシンは秤量器との通信を行っているマシンにのみに限定されています。 問題はプログラム中の2か所でおこる可能性があります。 1.OPENしたデバイスに対してコマンドを書き込む 2.OPENしたデバイスに対してコマンドを書き込むが、タイムアウトを起こす OPENしたデバイスを持ち回ってのコマンドの書き込みなので、1.については(限りなく)起きないと想定できます。 対して2.は他者様の回答より、ネットワークやCPU負荷などによりタイムアウトが発生する可能性があるとのこと で、2のタイムアウトにもう少し下駄をはかした値を設定する方向で調整しております。 ※無線LANでの使用は客先所掌であり、こちらからはアドバイス程度の権限しかありません。

  • mabyos
  • ベストアンサー率52% (61/117)
回答No.6

秤量器とのIFはデバイスをOPENして、デバイスに書き込み/読み込み、最後にCLOSEする 上記の処理を実行するアプリケーションはサーバ上で動作するアプリケーションではなく、 Windows10側のクライアントで動作するexeということでしょうか? それとも、サーバ上で動作しているexeかを確認させて下さい。 COM通信するアプリケーションがサーバ上で動作しているのであれば、RDPは関係しますし、サーバとWindows10との通信も関係します。

SuperMonkey2
質問者

お礼

mabyos様 回答ありがとうございます。 APはサーバー上で動作するexeです。RDP接続でサーバーとWindows10間を接続し、さらに、 Windows10と秤量器をRS232Cで接続しています。 1つ気になったことがあります。 Windows10と秤量器間の通信で、ボーレート=2400で、タイムアウトが2秒でマスタ定義されています。 この2400の速度に対して2秒のタイムアウト値は遅いと感じるのですが・・・

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.5

>APを疑いはしたのですが、毎回起きるわけではないので、バグの可能性は低いと考えます。 私も様々なソフトを開発してきましたが、毎回起きるかどうかは条件次第ですから、それだけでは判断できません。 例えばネットワーク通信の負荷が一時的に上がる場合があり、その影響で間接的に伝わって232cでの通信に影響が出ているといった可能性も考えられます。

SuperMonkey2
質問者

お礼

unokwave様 回答ありがとうございます。 発生条件については確かにソフトだけではなく、ハード面からの疑いもあります。 現在、現場で本現象が発生した場合、各種ログを取得してもらうようお客様にお願いをしております。

  • mabyos
  • ベストアンサー率52% (61/117)
回答No.4

リモートデスクトップ接続時にローカルのcomポートへのマッピングが失敗していないでしょうか。 アプリケーション側でエラーが捕捉できているなら、起動時にチェックし、エラーの場合に再接続を促すメッセージを出すことも可能かと思います。 切り分けとして有線LANで安定するかも確認されてはいかがでしょうか。

SuperMonkey2
質問者

お礼

mabyos様 回答ありがとうございます。 ローカルのCOMポートへの「OPEN」は成功しており、次に秤量値を取得するためのコマンドをデバイスに 書き込むところでエラーになっています。 確かにAPでエラーが拾えているので、エラー時は再度、同操作をしていただくという逃げてを考えています。 ※最初、私もサーバーとWindows10間を疑ったのですが、それは間違いで、Windows10と秤量器間のエラーで  した。

  • chachaboxx
  • ベストアンサー率23% (412/1777)
回答No.3

RDPは関係なさそうですね。 RS232やパラレル(死語)はクリティカルな処理が可能な反面、エラー処理がマズイと固まりやすいですね。計量器のI/Fを検討した方がいいですね。

SuperMonkey2
質問者

お礼

chachaboxx様 回答ありがとうございます。 確かにRDPは関係ありません。秤量器とのやりとりの中でのことです。 秤量器とのIFはデバイスをOPENして、デバイスに書き込み/読み込み、最後にCLOSEするといった 単純なつくりなのですが、この方式はすでに100以上のお客様に導入しており、今回の現象は初めておきた ことです。(なので、逆にハード面など不具合も考察の1つに入れています)

回答No.2

RS232Cは、とても雑電磁波に弱い接続方法です。 護るためのシールド付きのケーブルもありますが、取り合えずばアルミホイルで被ってみては?

SuperMonkey2
質問者

お礼

potatorooms様 回答ありがとうございます。 RS232C通信は昔からある通信方法で、ケーブルに問題があるとは考えにくいです。 本システムはすでに100以上のお客様に導入しており、今回の現象は初めてです。 基本的には、APで逃げるつもりで考えています。

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.1

232c接続しているアプリ自体にあるバグの影響に見えます。

SuperMonkey2
質問者

お礼

unokwave様 回答ありがとうございます。 APを疑いはしたのですが、毎回起きるわけではないので、バグの可能性は低いと考えます。

関連するQ&A

  • VB2008にてRS232C通信をするソフトを作ってみました。

    VB2008にてRS232C通信をするソフトを作ってみました。 通信する相手はボードで、ボードに対してコマンド(アスキー)を送信します。 送信した際に、ボードより回答は有るのですが特に受信の処理はしていません。 ノートPCなのでUSB-232C変換ケーブル(秋月電子の物)にて通信しております。 とりあえず通信は出来て、思った通りに動くのですが、1時間ほど経つとソフトがフリーズ する現象が起きます。 特に大量の通信をしている訳ではなく、3~4回ほど5文字位を送信しているだけです。 ソフトが立ち上がっている際は、常に通信ポート(例えばCOM3)は開いたままにして いる事に問題が有るのでしょうか? USB-232C変換ケーブルが悪いのでしょうか? それとも、ボードよりの返信がPCの何処かのバッファに溜まってしまうのでしょうか? フリーズする時は、特にボードに対して送信はしていないタイミングです。 1時間ほど通信したままにしてほったらかしにしている状態です。 これだけでは、解らないかも知れませんが、フリーズしてしまう要因で思い当たる事に 気づいた事が有りましたら何でも良いので、教えて下さい。 当方、この通信は初めてなもので、知らない事が多いかと思います。 ちなみにポートを閉じるタイミングはソフトを落としたときです。

  • USB変換RS-232Cケーブルの動作設定

    RS-232Cのポートを持つマイコン端末とノートPC間でUSB to RS-232C変換ケーブルを使って8kbyte程度あるデータをその端末から受信するのですが、windows8の64ビット版のPCでこれを行うと、なぜから通信エラーをアプリケーションが出して、データ受信が中断してしまい、データが取得できません。Windows7の64ビット版のPCでもどうようの現象が起きます。 しかし、windows XPの32ビット版のPCではこの現象が起きず、エラーなしでデータファイルを転送完了できます。 何か、解決方法などご存じの方いらっしゃいませんでしょうか? ちなみにUSB to シリアル変換ケーブルは USB-CVRS9という型番のものを使用しています。

  • 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とオンラインにな  っていた。

  • FTPの連続実行でフリーズする

    UNIX + Cで作成しています。 あるプログラムで、FTPコマンド※を発行し、 遠隔のサーバ(サーバはLINUX)に置かれているファイルを取得しようとしています。 ※system("FTP ~~~ bye") 単発でファイルを取得する場合は問題ないのですが、 連続してファイルを取得しようとした場合、数時間動きつづけた後、 FTPコマンドを発行した状態でフリーズしてしまう現象が起こります。(100%かは分かりませんが、再現性はあります。) なぜこのような現象が起こるのでしょうか? 連続してのFTPコマンド発行は問題があるのでしょうか?

  • リモート接続ができない

    初質問です。よろしくお願いします。 <問題> ネットワークを介したリモート接続で以下のエラー。 (以下は、クライントPCで psql を実行したときのものです。) D:\Program Files\Download Files\psql>psql -h 192.168.0.100 test Connection to database 'test' failed. connectDB() -- connect() failed: No error Is the postmaster running (with -i) at '192.168.0.100' and accepting connections on TCP/IP port '5432'? ・サーバマシン上での同じコマンドは以下のとおりOKです。 [postgres@localhost data]$ psql -h 192.168.0.100 -l List of databases Name | Owner | Encoding -----------+----------+---------- postgres | postgres | EUC_JP test | postgres | EUC_JP (4 rows) <行った対処> ・postgresユーザは、LINUXユーザでも登録済み ・ping 192.168.0.100 は Reply があることを確認 ・サービス名 postgres のポート番号を/etc/servicesで 5432 を確認 ・postmasterを'-i'付きで起動(pg_ctl -w start -o '-i') ・psコマンドにて、'-i'付きで起動を確認 ・postgresql.conf にて、"listen_adresses = '*'"を設定 ・pg_hba.conf にて、"host all all 0.0.0.0/0 trust"を追加設定 ・netstatコマンドにて、 tcp *:postgres LISTEN であることを確認 <環境> ・LAN環境  ・BUFFALO無線LANのAirStationを使用。 ・クライアントPCは無線接続、サーバは有線接続 ・サーバマシン  ・CPU:PEN3 800MHz,MEM:256MB ・OS:FedoraCore5  ・IP:192.168.0.100/24  ・PostgreSQL 8.1.2  ・PSQL ・クライアントPC  ・CPU:Cel 650MHz,MEM:384MB ・OS:WindowsXP Pro  ・IP:DHCP  ・PSQL ・Common SQL Environment 1.59

  • Windows Server コンピュータへの接続数が最大に達しているため、これ以上このリモートコンピュータに接続できません

    Windows Server 2003 R2でクライアントの接続時に、 「コンピュータへの接続数が最大に達しているため、これ以上このリモートコンピュータに接続できません。」と表示されてしまいます。 Windows Server 2003なので、セッションは無制限だと考えています。 下記コマンドで強制セッション切断設定も行っていますが、現象が改善されません。 net config server /autodisconnect:0 ライセンスモードは「接続デバイス数または接続ユーザー数」にしています。 何か解決のヒントをいただけないでしょうか?

  • BATファイル実行にフォーカスを当てたい

    Windows2008サーバにRDPでWindows7から実行しています。 サーバにBATファイルを作成し、(XCOPYコマンド)データのバックアップを行います。 この時ですが、クライアント(Windows7)で実行させたBATファイルですが(コマンドプロンプト)画面が なぜか背面にかくれてしまい、BATの実行内容がみれなくなることがあります。また、BATの終了時に、正常終了かどうかの表示を行い、Pauseコマンドで止めていますが、これが、背面にかくれてしまい、いつ終ったのかわからない状態です。ずーっとBAT自動されたコマンドプロンプトの表示にフォーカスを当てたいのですが、BATに記述することにより、再度フォーカスを取り戻すようなコマンドはあるでしょうか?よろしくお願いします。

  • C++でSQLServer2008に接続

    エラーの内容が分からず困惑しております。 OS:Windows XP Pro 開発:Visual studio 2010 Pro DB:SQLServer 2008 コード #include <afxdb.h> void test_main() { CDatabase db; db.OpenEx(_T("DSN=Temp_Data;"), CDatabase::openReadOnly | CDatabase::noOdbcDialog); //↑ここでエラーが発生しています。 CRecordset rs(&db); try{ rs.Open(CRecordset::forwardOnly, _T("select * from [Temp_Data].[dbo].[Temp_Table]")); CODBCFieldInfo fi; short nFields = rs.GetODBCFieldCount(); } OpenEXでデータベースへ接続する部分(↑)でエラーが発生しており、エラーの内容が解決できず先に進めません。 VSのサーバーエクスプローラーでは、接続に成功しており、クエリでデータも取得できています。 エラーの内容 xxx.exeの0x7c812afbでハンドルされていない例外が発生しました:Microsoft C++の例外:CDBException と表示されどうしたらいいのかわかりません。 分かる方教えてください。 情報等で足りないものがあれば、おっしゃってください。 返信でお答えします。 お願い致します。

  • リモートデスクトップが接続できない

    職場のノートPC(Windows XP Pro)から自宅のデスクトップ(Windows XP Pro)にリモートデスクトップで接続しようとすると、以下のエラーメッセージが出て接続できません: 「このコンピュータはリモートコンピュータに接続できません。 接続を再試行してください。問題が解決しない場合は、リモートコンピュータの所有者またはネットワーク管理者に問い合わせてください。」 いずれのPCにおいても、サービスの「Terminal Services」は開始(自動)にしてありますし、リモートデスクトップ接続も有効にしてあります。 リモートデスクトップ接続の「コンピュータ」欄には、下記で確認した自宅PCのグローバルIPアドレスを入力しています。 http://www.cman.jp/network/support/go_access.cgi ちなみに、ノートPCを自宅に持って行って、自宅内の無線LANに接続して、ローカルIPアドレスを入力すると、問題なくリモート接続できます。 コマンドプロンプトで、「netstat -an」を入力すると、自宅(サーバー側)は3389番ポートがlisteningになっていますが、職場(クライアント側)では3389ポートが表示されません。これが問題なのでしょうか? いずれのPCでも、ウイルスセキュリティゼロを使用しています。 Real VNCをダウンロードして試してみましたが、こちらもうまくいきません。今はTeam Viewerで代用していますが、画面の解像度が悪く、不便しています。 ご助言をよろしくお願い致します。

  • 起動しているアプリケーションのプロセスIDを取得したい.

    現在,起動しているアプリケーションのプロセスIDを取得したいと考えています. プロセスIDを取得するコマンドはあるのでしょうか? 環境:Windows2000+SP3