PC9801のDiskBasicでファイルをRS232C送信し,DOS/VのWinndow(OS 95 98 XPなど)
のRS232CのCOM1で正常受信ができません。DOS/VのPC9821のDOSのN88Basic
では,クロスケーブルを使用して受信できますが,ウィンドウでは,フリーソフト7,8種類使用
しましたが、同じようには受信ができません。
ウィンドウXPで、同期して受信らしき様子はあるのですが、内容が16進コードで
00とか80とかのコードでどう行っても,送信コードとは異なっています。
送信コードは DISKBASICのN88BASCプログラムで以下のようなものです
100 'ABC
110 LINE(100,100)-(150,100),COL
通信ケーブルは, クロスです。
DOS N88BASICと同じように受信ができないのでしょうか。何が悪いのか原因は?
教えてください。
昔の5インチのデータを移植資料としてウィンドウで保存したいのです。
No.9ベストアンサー
- 回答日時:
PC-9801のシリアルポートの速度は、DiskBasicから設定はできません。
メモリスイッチで設定します。(switch.n88が付いている)また、5インチのデータはプログラムソースですか? テキストファイルですか? バイナリファイルですか?
プログラムソースなら、BASICでLoadして、「COM1:」にアスキーSAVEすれば良い。
テキストファイル(バイナリファイル)なら、ファイルを1バイトずつ読み込んで、16進2桁にしてシリアルポートに出力するようなプログラムを、BASICで作る必要があります。 この場合、受信側にも受信したデータを16進2桁から1バイトに戻してファイルに出力するするプログラムを用意する必要があります。
この回答への補足
早速、実行してみました。
データは、Graphicのサブルーチンソフトです、テキストファイル形式です。
>PC-9801のシリアルポートの速度は、DiskBasicから設定はできません。メモリスイッチで設定しま
>す。(switch.n88が付いている)
switch.n88で通信条件を、設定してみました。
デフォルトで ボーレートは 1200でした。パリティ8 スtップビット1 他は none port 1
ボーレートを9600にして見ました。
ようやく、動作しました。3,,4本のVBソフトでも動作しました。N88Basic for windowでも
動作しまし た。
原因は、DISK BASICの場合, 9801本体内部のボーレートに依存しているのが、よくわかりました。
che65535さん、SortNerdさん.KEIS050162さんの皆様がが指摘していたように、ボーレートをソフト
で指定していたもので設定できなかったのが原因でした。
ちなみに、asano_nagiさまのターミナルソフトでも、難なく受信が行えました。
明確になった事:
本体のディップスイッチでは、ボーレートは設定できません。(マニュアルから)
デフォルトでのボーレートがわかったので、このボーレートにDOS/V PCを合わせて実行して
みました。(この場合 switch.n88は使わない)
N88BASIC for WINDOW でも正常に動作することがわかりました。遅いですが。
他の serial02なるソフトでも動作する事がわかりました。
ようやく、前進できます。
お忙しい中, 回答を寄せていただいた皆様に、心から感謝をいたします。
asano_nagi様、chei65535様,SorteNerd様には繰り返しのご回答へ感謝いたします。
KEIS050162様などいろいろお知恵を頂きありがとうございました。
なにしろ、皆様に感謝一杯です。
No.8
- 回答日時:
ボーレートが間違っているように見えますがはっきりしないので、
まずどのようなデータが送られているのか確かめるのがよいと思います。
オシロスコープを持っているならそれで、無いなら十分に分圧してからオーディオ入力に入れればデータが取れるでしょう。
とりあえず0xFF,0xFE,...0x80,0x00あたりを送ってみてデータを見れば何がまずいかわかると思います。
No.7
- 回答日時:
Windwos 側は、ターミナルソフトを使うとして、 N88Basic 側は、単に、
1) 転送しようとするプログラムを、一度 load して、
2) それを、
save "COM1:", a
とすると、"COM:1" というファイル(正しくはファイルディスクリプタ)に、セーブする=RS232-C 経由で、一気に送信する という動作をします。
No.6
- 回答日時:
20年以上も前のことなので、細かい方法などは忘れてしましましたが、DOS版N88Basicが動く環境とN88Disk Basicが動く環境が揃っているなら、RS232Cで送るよりも、Disk BasicでアスキーセーブしたファイルをDOS版に変換した方が簡単な気がします。
双方PC98ならば、そんなに難しくなかった記憶があります。詳しい方法は忘れてしまいました。下記などを参考にしてみてください。
http://oshiete.goo.ne.jp/qa/2361331.html
また、RS232Cの通信環境を確認するのであれば、PC9801をターミナルモードにして、ターミナル画面からタイプした文字をDOSマシンの方でちゃんと表示されるかどうか確認するのが良いでしょう。
これでちゃんと送受信できるのであれば、送信するBasicのプログラムが何か間違っているということでしょう。
PC98のマニュアルは未だ持っていますか?ターミナルモードという章を読んでみてください。
通信は、双方の通信モード(非同期、ボーレート、ビット長、ストップビット長、パリティ)が双方で合っていないと、文字化けなどします。結線が間違っていると、そもそもデータが送信されません。
取り急ぎご参考に。
No.5
- 回答日時:
N88BASICでクロスケーブルで受信できるなら
「Windows上で動くN88互換BASIC」
http://www.vector.co.jp/soft/dl/win31/prog/se025 …
でやっても受信できるのでは?
で、Windows上で動くN88互換BASICに持って来れれば、アスキーセーブすればWindows上にファイルがセーブされるのでは?
試してないので「やってみる」しかないですけどね。
PC98は、ポートのボーレートは、本体のディップスイッチ等で設定するので「Windows上で動くN88互換BASIC」では「ボーレート設定」がオプションになっています。
当方は「Windows側で受信する方のボーレートが送信側と一致してない」と思ってるんですが。
送信と受信でボーレートが合って無いと、殆どのデータが「00」とか「80」とかになりますよ。
PC9801は「ボーレートは本体のディップスイッチで設定」します。プログラムでは指定出来ません。
Windowsパソコンは「ボーレートはCOMポートを開く時のオプションで設定」します。指定しないと「デフォルト」になります。
なお「ボーレート?何それ?」って場合は出直して来て下さい。お話になりません。
当方は「両方でボーレート合わせて、アスキーセーブしたの送信すれば、何の問題もなくXPで受信できる筈」って思ってるんですが。
No.4
- 回答日時:
No.2です。
補足を見て、状況が全くわからなくなりました。
> 100 OPEN "COM1" FOR INPUT #2 '読み込むファイル
> 200 OPEN "COM1:N81NN" for OutPut #1
> 400 INPUT #1,A$ '1文字づつ入力 または LINE INPUT #1
> で基本送信しています。
そもそも、書き込むファイル #1 に対して、 input で、"送信" しているのはなぜですか?
ただ単に、「昔のソースを保存する」だけなら、ターミナルソフトと呼ばれるもので、受信してそのまま保存すれば楽ですよ。
たとえば、
http://sourceforge.jp/projects/ttssh2/
とか。
試してみた「フリーソフト」とは、たとえば、どういうソフトですか?
単に、「DOS の Basic で、RS232C をアクセスする方法がわからない」という質問ですか?
「同期して受信らしき様子がある」とは、どのようにして判断したのでしょう?
いろいろと不明です。
この回答への補足
紹介して頂いたソフトは、すでにテストずみです。やはりだめでした。
9801のボーレートは9600でテストしています。受信側9821のDOSで行う9801の本体のボーレート
スイッチを変えなくても正常に受信が行えます。しかし、その機種のウィンドウで(WIN95)紹介し
ていただいたソフトでは、受信が正常にできませんでした。これはほかのDOS/VのOS XPで受信
したものと同様でした。
>当方は「両方でボーレート合わせて、アスキーセーブしたの送信すれば、何の問題もなくXPで受信
>できる筈」って思ってるんですが
小生もそう思いました、結果は残念ながら駄目でしたので、Helpした次第です。
前の捕捉で、ミスがありました
INPUT #1,A$-->INPUT #2,A$ (送信Fileを呼び出すために使用) 最初はLINE INPUTで呼び
出していたのですが,1度に送るのが悪いかと思い,1文字づつの呼び出し、送信で行ったものです。
誤解を与えて申し訳ありません。(asano_nagi様へ)
紹介していただいた,ターミナルソフトもテストしてみます。
要するに、ウィンドウ上で正常に受信ができれば良いのです。
No.3
- 回答日時:
送信側と受信側で、ボーレート、キャラクタビット数、パリティの有無を一致させないと、文字化けします。
なお、BASICのプログラムは、COMに送るときに「アスキーセーブしたもの」を送らないといけません。
BASICのプログラムは、普通にセーブされた状態は「中間コード」と言う、バイナリコードで保存されています。
BASICでは「REM文は01、LET文は02、GOTO文は03、IF文は04」のように、命令文を「1バイトの内部コード」に変換して記憶します。
こうすると、どんなに長い綴りの命令文でも「1バイト」で済むし、実行時に「命令文かどうかを文字列で比較しなくて済む」からです。
実行時に「1文字目がエル、2文字目がアイ、3文字目がエヌ、4文字目がイーだから、これはLINEだな」と、判断してから実行していたのでは、遅くなってしまいます。
なので、行番号付きで打ち込んだ瞬間に「1文字目がエル、2文字目がアイ、3文字目がエヌ、4文字目がイーだから、これはLINEだな」って判断を先に済ませて、LINE文を意味する中間コードに変換して保存するのです。
実行時は、変換済みの中間コードを1バイトだけ見れば「これはLINE文だ」と判ります。
このような理由で、中間コードになっているプログラムをそのまま送ってしまうと「00」とか「80」とか、見た目とはまったく別のコードが送られてきます。
この回答への補足
送信コード
100 OPEN "COM1" FOR INPUT #2 '読み込むファイル
200 OPEN "COM1:N81NN" for OutPut #1
400 INPUT #1,A$ '1文字づつ入力 または LINE INPUT #1
で基本送信しています。
ファイルは、アスキーSAVEしたものを使用して、行ってみました。
(asano様とchie65535さま指摘) 結果は同じでした。
chie65535さんのコードは,どのように記述するのでしょうか。もともとBASICは
中間コードですので、説明を受けても,実行ができません。
j受信はDOS N88BASICで受けると正常に受信できます。
公開ソフト win95対応N88BASICを使用すると全く動きません。絵や文字などは処理
できるようで すが,通信は現在できていません。
他に VBのsample_0008なる公開ソフトがありますが、これでも正常に動作しません。
データは同期して入ってくるようですが, BASICコードとしては、受け取れていません。
16進で確かめたのですが,全く異なるようです。chieさんも指摘されているように
あとは,tsunjiさんの結線を変える方法でうが,すぐには試せません。壊れないか心配もあります。
No.2
- 回答日時:
どのような方法で、Disk Basic から送信しようとしているのでしょうか?
Disk Basic のファイルは、独自のバイナリファイルですから、同じ(互換性のある)Diks Basic のシステムで受信しないと、意味のあるデータにはなりません。
Basic のプログラムということであれば、Load したあと、
save "COM1:", a と a オプションをつけるか、
list "COM1:" と list コマンドを使うかで、送信できた気がします。
この回答への補足
送信ソフト
10 '
20 OPEN"COM1" FOR INPUT AS #2
30 '
40 OPEN "COM1:n81nn" FOR OUTPUT as #1
50 '
60 IF EOF(2) THEN 110
70 LINE INPUT #2,A$
80 PRINT #1 ,A$
90 PRINT A$
100 GOTO 60
110 PRINT #1,"END":CLOSE #1:CLOSE #2:END
が送信コードです。
送っているの90でモニタしています。内容はN88BASICprogramです。
このプログラムは昔,購入したグラフィックのサブルーチンです。
何故か、DISK BASICで記述されたものです。
送信すると,画面にリストがスクロールされます。当然ケーブルがクロスでないと送れません
まず.PC9821XaタイプのDOS N88BASICを動作させて受信すると正常にできます。
この機種はほ殆ど使用していないので,使いたくないPCです。
同じ機種でwin95を動作させて、公開ソフト N88basic forwinndowで受信すると、何も出てきませ ん。ケーブルはDOSと同じDSUB25ピン クロス使用です。
次に、EPSONのXPウィンドウで別のクロスケーブルを接続(EPSONのはDSUB9ピンです。
ケーブルは、昔購入したリバースケーブルです。
この状態で 下記のフリーソフトを試しました。
RS232C_TEST RS232C_Fman samp_serialport
COMT1_2 serial1020 sirialTester
sample_0008
など、フリーソフトから入手してテストしました。VB ソースリスト付です。
C言語のものも1つあったとおみます。
最後の sample_0008がデータとしては、何やら入ってきます。
このソフトは、画面上部にリストボックスが3つあり
ポード選択 ボーレート選択 パリティ+Xon/Off選択 が行え 傍に接続ボタンがあります。
下部には送信入力、その下に受信入力画面となっています。
送信はしないので,受信画面をチェックしています。
PC98の送信に合わせて、,正常ではありませんが上記受信画面にデータ?が亜羅列されます。 送信がおわると,同時に受信も停止します。
XPでもN88basic for windowは動作しますが,通信は、同じ結果動作しませんでした。
受信データをアスキーやHexなどに変換もできるソフトもあります。
他のソフトの説明は省略させていただきます。
asano_nagiさんの紹介していただいた,ターミナルソフトのttermproを動作させてみましたが、
不明の1文字が入ってくるだけでした。
winndow serial選択もしてみました。簡単には行きそうもありません。
keis050162のオシロで云々とありましたが,ケーブルをむき出しにしないと,できません。市販のを
壊したくないので。DSUB9ピンの箇所を作成増設すれば、できそうですが,.....現状ではソフトで
対応したいと思います。お金を掛ければ手段はあるようですが.........
とりあえず、情報が不足とのありましたので、捕捉しました。他には、もうありません。
N88DISKBASICのファイルを DOSに簡単に落とせるのでしょうか? DOS環境の場
合DISKBASIC環境は動作しないし、逆も同じだと思うのですが?
.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Outlook(アウトルック) 標準アカウントをOUTLOOKアプリに登録するとほかのアカウントのメールもこのアドレスに受信される 1 2023/02/03 20:34
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- その他(メールソフト・メールサービス) PCでメールは発信について 6 2022/08/13 09:23
- Outlook(アウトルック) メール送信できない 3 2022/07/20 09:07
- Gmail gmail から docomo メールに送信できません 4 2022/06/25 00:41
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- Yahoo!メール PS4の事で質問です メールアドレスを変更の際、受信出来ず困ってます 私は今までPS4のアドレスはP 1 2022/07/28 17:06
- Android(アンドロイド) グーグルアカウントの2段階認証に関する問題 3 2023/07/24 14:14
- PHP a href リンクタグでだけで 送信が できちゃっています。 1 2022/04/18 04:25
- ドライブ・ストレージ RS232C 通信でエラー(受信が正確でない)がでます。どなたか教えてくださいませ。 11 2022/09/03 11:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
遅延確認応答について教えてく...
-
UDP受信時の通信異常検知について
-
赤外線センサーについて
-
(VC++)シリアル通信について
-
パソコンに詳しい方教えて下さ...
-
バッチファイルでディレクトリ...
-
ipadで社内ネットワークに接続
-
java.lang.NumberFormatExcepti...
-
Lhaplusが発したと、みられるエ...
-
Windows上のファイル操作の履歴...
-
エクスプローラで表示したファ...
-
en_US.UTF-8ロケールってどのPO...
-
別のフォルダにファイルを移動...
-
Zipファイルをエクセルに指定変...
-
ffastun.*って何ですか?
-
ICH5R→ICH5R (RAID0) マザー...
-
robocopyの失敗について
-
FFFTPでアップロードしたデータ...
-
指定ファイルをFTPで自動アップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
TCP/IP のパケットの分断と結合...
-
Outlookの「受信日時」「送信者...
-
CRC-CCITTに関しての仕様とサン...
-
シリアル通信時のデータ受信方法
-
Excxel vba でYahoo API で住所...
-
recv関数の戻り値について
-
UDP受信時の通信異常検知について
-
ASP.NET C#でPOST受信
-
RS232cを用いた送信プログラム
-
VC++メッセージの送受信につい...
-
PC98で232c送信winndowで受信で...
-
TCPのプログラミングで質問…と...
-
VBのMSCommコントロールを使っ...
-
「TCPは全二重可能」の意味
-
DHCPOFFERの受信について
-
VB2010で、シリアル通信の方法...
-
msgrcv( )で領域破壊?
-
ネットワークでの受信バイト数
-
シリアル通信
おすすめ情報