C言語関係掲示板

過去ログ

No.16. コンピュータ同士の通信のソフト


はじめまして
工場で電気の保守をしていますが、最近パソコンをかってから
プログラム言語に興味を持ちこのHPをよくみています。
C言語の初心者で右も左もわかりませんが、一つアドバイスお願いします。
コンピュータ間のデータの通信のソフトの大きな流れをまず、教えて下さい。 
ENQ、STX、ACK等を使った通信プロトコルのソフトの解説があればよろしくお願いします。


ベーシック手順という伝送制御手順ですね。

> コンピュータ間のデータの通信のソフトの大きな流れをまず、教えて下さい。 
> ENQ、STX、ACK等を使った通信プロトコルのソフトの解説があればよろしくお願いします。

コンピュータ間のデータ通信ソフトといっても、いろいろな種類のものがありますが、
ENQ、STX、ACKを使った手順は「ベーシック手順」という低速なデータ通信に用いられる
ものです。私もかなり以前にこのベーシック手順を用いたモデム通信のプログラムを作った
ことがあります。

とりあえず、情報処理試験関係のホームページですが、http://www2.osk.3web.ne.jp/~kazikeda/magazine/LIT0021.txt
http://www.tama.or.jp/~ns-guide/capt3/capt3.1/capt314.html
を紹介します。
ソースレベルで検索したところ、
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.1.9.html
のようなものも見つかりました。雰囲気くらいはわかるかもしれません。


ともじさんアドバイスありがとうございます。
通信の概略はマガジンでわかりました。
コンテンション方式やボーリング/セレクティング方式がありこれに基づいてソフトを作っていくのだと思うのですが、紹介してもらったソースをみてもちんぷんかんぷんなんですが・・・。
しかしこのソースが理解できなければだめだと思います。
じっくり解読していきたいのですが力を貸して下さい。
まずパソコン間通信で
「送信しますよ」関数、「受信しました」関数等いろんな関数がいると思うのですかどの辺りのコードが該当するのですか?
そして他にもどんな通信用の関数がありますか?
伝送キャラクタをどんな風に盛り込んでいくのですか?
まずこの辺りが基本と思うのですがわからないので質問しました。
よろしくお願いします。


紹介したソースは確かにベーシック手順で通信をしているものですが、ヘッダ
ファイルもありませんし、理解するのは困難だと思います。
どうやら、受信部分だけのようです。
あくまでも、雰囲気を伝えるために紹介しました。
#もともとあのサイトは、ひどいソースを診断して美しいソースにするという趣旨の
#サイトなんですよね。

私が通信プログラムを書いたのは、本当に恥ずかしくなるくらい昔なのですが、
基本設計そのものは、ハードウェア担当者から出されてくるので、ソフト屋は
その仕様に忠実にプログラムを作っていくようになります。
このタイミングで、この信号を出して、というようなことは全てハード屋さんの指示
に従うわけですね。で、その指示をもとに状態遷移図を書いて、各処理を関数に
して、プログラムを作っていきました。

http://www.tama.or.jp/~ns-guide/capt3/capt3.1/capt314.html
に、タイミングの図がありますので、これをもとに状態遷移図を書いてみると
いいでしょう。

処理的には、送信部分と受信部分が当然ありますが、受信部分ではACKを
受け取ったとき、NACを受け取ったとき、データを受け取ったとき、タイムアウト
になったときなど、それぞれ処理が必要になります。受信後のデータチェック処理
(BCC)もあるでしょうし、DLE信号を受け取ったときの処理も必要ですね。
送信部分では、送信データの編集処理が必要です。
(あと、何があるかしら)
まあ、いずれにせよ、状態遷移図を書いて、場合場合で漏れがないか、ベーシック
手順の仕様をよく確認することですね。

伝送キャラクタは#defineで定義して利用すればいいでしょう。
受信データでしたら、switch文で振り分ければいいし、送信データでしたら、
配列で必要な伝送キャラクタと送信データを組み立てて、先頭から順番に送信すれば
いいと思います。

ところで、どういう目的で、どの程度のプログラムを作成する予定なのでしょうか。
実際にどのように信号を取り込むかなどはご調査済みでしょうか。
どういった環境で通信を行うのでしょうか。それによっても、プログラムの形は
違ってくると思います。


なにをどうするといった具体的なことはまだ何も考えられる段階ではありません。
会社の電気制御装置のコンピュータ(シーケンサやFA)と普通のパソコン(OA等)間のデータがどんなデータ伝送のソフトで動いているのか知りたいと思っただけです。
ハード面、ソフト面ともまだ真っ白の状態です。
またC言語も始めたところでこれを題材としてアドバイスもらえれば一石二鳥と思った次第です。
RS232C、422のシリアル通信とか、パラレル通信でソフトも変わってくるということですか?
まず通信用語からわかってないです。
そしてまず送信処理から理解しようと思うのですが、アドバイスの引用ですが「送信部分ではデータの編集処理が必要で伝送キャラクタと送信データを組み立てた配列を先頭から送信する」とかかれてますが、簡単なコードはありますか。
そしてmrs.hやmel.hといった標準ライブラリが必要なのですか?
memcpy()、memset()、sem_snd()、sem_rcv()、dataread()、datawrite()といった関数はどこにありなにをする関数何ですか?
   ひとまず・・・

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.7.25
Copyright(c) 2000-2002 TOMOJI All Rights Reserved