環境 [XP VB6.0]
お世話になります。
RS-232Cのクロスケーブルで2台のPCを接続し、一方のPCにあるファイルをもう一方のPCに送信し、受信したファイルを保存するというプログラムを作成しないといけません。
現状、フォーム上でコモンダイアログによりファイルを選択し、選択したファイルが、フルパスでテキストボックスに表示されます。
送信ボタンをクリックするとファイルの送信処理を開始し、受信側は受け取ったファイルを保存するという流れを作りたいのです。
しばらく調べたのですが、なかなかクリティカルする回答を見つける事が出来なかったので質問させていただきます。
もうこのような転送手段は使わないと思いますが・・・。
MSCommコントロールを使用し、文字の送受信程度であればできたのですが、MSCommではファイル転送はできないのでしょうか?
送信側、受信側のプログラムをご教授いただければと思います。
つたない文章で申し訳ありません。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
>この記述で、バイナリモードで開いたファイルを
>あたかもコピーしたかのような形で、別のファイルとして書き込む事が出来ますが、
>このbytBufAll()の内容を転送し、Putステートメントを受信側で行うと言う考え方で
>間違いないでしょうか?
微妙にちがう気がします。
Putはファイルへの出力ステートメントですから、「受信側でおこなう」ものではありません。
つまり、Putに相当する全バイト送信関数を「送信側PC」で実装し、
加えて、これを受信してファイルに落とす受信関数を「受信側PC」に
実装する必要があります。
提示されているプログラムではbytBufAllの最大数が指定されていないので
プログラム的にもまずいとおもいます。
あえてこれを利用するならLOFでファイルのサイズ分を得て
Redimするのが定石かな。
そのあと、よみだされたbytBufAllを1バイトづつMSCommに送出するのを
繰り返せばよいとおもいます。
受信側にそれなりの速度があって、受信バッファももっているようなら
数十バイトづつおくるのもありかとおもいます。
ただ、受信側ではファイルの終端であることが認識できませんから
前述のように、ファイル終端をなんらかの形で伝えられていること
が前提ですし、通信途絶などの不慮の状態を検出できるように
プログラム構造を考えておくことが必須です。
techa様
たびたびありがとうございます。
ひとまず、送信側のPGを作成し、受信側のPGを作成しているところです。
bytBufAll()の内容を受信し、ファイルに書き込んでも文字化等がおこり、うまく開けない状態ではあります。
もう少し試行錯誤してみて、どうしてもうまく行かない場合はまた質問を上げたいと思います。
お力を貸していただき本当にありがとうございました。
No.2
- 回答日時:
まず、RS232Cでもバイナリファイルの転送は可能です。
ただ、考えなければならないことが増えるので、何かしらの方法が
必要とされるだけです。
RS232Cでの転送がキャラクタ転送となるときは、
表示キャラクタ以外の文字を制御文字として扱えるので、
データの終端などを正確に把握することが可能です。
これに対して、バイナリの場合は&h00~&hffまでのすべての
コードが出現可能であって、データの区切りの認識ができなく
なるからです。
これでは、受信側のPCはいつ伝送終了になったのか、把握するすべ
がありませんね。
そこで伝送のプロトコルを定めることになるのですが、それには
ANo1さんのように、全部テキスト化しておくるほうほうもわかりやすくて
よいとおもいます。ただ、このようにおこなうと
実際のバイト数*(1バイトを表現する文字数)+α
の時間がかかってしまいます。
あるいは、先に全体のバイト長をキャラクタでおくっておいて、その後は
一定バイト数をバイナリでおくる、というのも手ですね。
昔からある手法ではXMODEMやYMODEMなどの方法もあります。
しらべてみるのもいいでしょう。
いまどきなら、一旦BASE64でエンコードして全部テキスト化してしまい、
これをそのまま転送し、受信PCで再度デコードするというのもありかも
しれません。
VBならこちらのほうがサンプルをみつけやすいようにおもいます。
techa様
ご返答ありがとうございます。
さらに質問になりますが、
Dim bytBufAll() as byte
Open FILENAME1 For Binary As #1
Get #1, , bytBufAll() 'ファイル全体を読み込む
Open FILENAME2 For Binary As #2
put #2, , bytBufAll() 'ファイルを書き込む
この記述で、バイナリモードで開いたファイルを
あたかもコピーしたかのような形で、別のファイルとして書き込む事が出来ますが、このbytBufAll()の内容を転送し、Putステートメントを受信側で行うと言う考え方で間違いないでしょうか?
No.1
- 回答日時:
MSCommコントロールには直接ファイルを転送する機能はありません。
その機能はあなたが作ることになります。
(それがファイル転送のプロトコルとなります)
ファイルを転送するには最低限
1.ファイル名を送る
2.ファイルの中身を送る。
の2段階の処理が必要です。
スマートでは無いけど簡単な方法を示します。(概念だけなのでテスト無し)
送信側
(1)ファイル名をテキストで送る。
(2)ファイルをバイナリモードで開く。
(3)1バイト読み込む。
(4)読み込んだデータをCstr関数で数値文字列にして送る。
(5)ファイルがEOFでなければ(3)に戻る。
(6)-1を送ってファイル終了を知らせる。
(7)ファイルを閉じる。
(8)終わり
受信側
(1)ファイル名を受け取る。
(2)受け取ったファイル名(パス部分は削除)でバイナリファイルを開く。
(3)データを1行受信する。
(4)データが-1なら(7)へいく。
(5)受信したデータをバイト変数に入れて、ファイルへ1バイト書込む。
(6) (3)へ戻る。
(7)ファイルを閉じる。
(8)終わり
Hayashi_Trek様
早速のご回答ありがとうございます。
ファイルそのものは遅れないんですね・・・。
例えば、ワードデータとかエクセルデータはたまたビットマップデータ等、中身がテキストとは限らないファイル等のやり取りはできないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PDF 保存したPDFファイルが開けなくなり、困っています 1 2022/09/15 21:08
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
- Outlook(アウトルック) w10からw11にバージョンアップ。アウトルックがクラウドと連携…そのためか、連絡先が消失!! 3 2023/05/09 18:34
- PHP a href リンクタグでだけで 送信が できちゃっています。 1 2022/04/18 04:25
- その他(Microsoft Office) officeのWordで作成した文章をメール添付してしたい 3 2023/08/07 07:12
- Outlook(アウトルック) アイホンで撮った写真を一枚だけPCに移し画像を縮小してWebメールに添付して送信する方法 1 2022/04/22 15:33
- Android(アンドロイド) Aloha Browser でダウンロードしたファイルをPCに転送するには? 1 2022/05/23 18:54
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- その他(メールソフト・メールサービス) Gメールについて質問 6 2023/06/14 18:02
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
フォントについて教えてください!
みなさんの一番好きなフォントは何ですか? よく使うフォントやこのフォント好きだなあというものをぜひ教えてください!
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
前回の年越しの瞬間、何してた?
いよいよ2025年がやってきますね。 年越しのスタイルは人それぞれ。 2024年を迎える瞬間は何をしていましたか?
-
2024年においていきたいもの
2024年もあとわずかですが、いま抱えているもので「これは来年にもっていきたくないなぁ」というものを教えて下さい。
-
シリアル(RS232C)通信でファイル送信をするには
Visual Basic(VBA)
-
2台のPCでRS-232C接続でファイル転送
その他(コンピューター・テクノロジー)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッファとは何ですか
-
削除したファイルの復旧、およ...
-
VBA バイナリ―から文字列にす...
-
HDDのバイナリイメージの取得方...
-
EOF
-
【python】Excelファイルを読み...
-
Microsoft VBAで2GBを超えるフ...
-
EXCEL VBAでテキストファイルの...
-
VBAでバイト型データをファイル...
-
マイクラでPythonのプログラミ...
-
どんなプログラムを書いても指...
-
パラメータが正しくありません...
-
C言語初心者の質問失礼します。
-
エラーの原因は?「この関数の...
-
VC++でexeファイルが作成できま...
-
EXCELでダイアログボックスを開...
-
ExcelVBAでカレントディレクト...
-
Access クエリ実行が急に非常に...
-
JAVA .jarファイルに再圧縮する...
-
ファイルやディレクトリの存在...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
エクセルVBA 2千万行のCSVファ...
-
ページ読み込み時に自動的にsub...
-
EXCEL VBAでテキストファイルの...
-
EOF
-
【python】Excelファイルを読み...
-
VBA バイナリ―から文字列にす...
-
エラー:ストリームの終わりを...
-
24ビットのWaveデータの中身に...
-
FTPでエクセルをPUTするとファ...
-
テキストデータをSQLServerに取...
-
C言語とシリアル通信の送受信...
-
HDDのバイナリイメージの取得方...
-
EXCEL VBAで、バイナリデータの...
-
入力ファイルをバイナリにする利点
-
【Teraterm】filewritelnについて
-
Javaでのエンディアン変換
-
バイナリファイルの比較につい...
-
バイナリファイルの検索について
おすすめ情報