したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

■■■20レス以内で済むF-BASICの質問はこちらへ■■■

612598:2015/10/22(木) 05:00:26
>>610,611
> KERNEL32.DLL 2011/07/05 : 5.00.2195.7144
カーネルが新しい・・?。


 資料拝見しました。ハードウェアフロー制御はなしで正解ですね。
機器側の端子を見ると。

資料から読み解くと、
・データはASCIIの文字列(7bit)で行端コードはCRのみとなります。
・機器へのコマンド送信は1秒間に1回程度。
・受信データは、1フレーム(行)が14文字(CRコード含む)長さ固定。
・受信データは1回に4フレーム固定(?)で送られる。


テストサンプルを作り直しました。
・F-BASICでは行端コードの種別の設定がないので、print# を変更します。
・入力の方は行端コードがCRのみでも可能だと思いますので、LINE INPUT#を選択します。

※ヌルキャラクタの問題がまだわからないので、サンプルでは後段で空白に置き換える
処理を加えています。
※受信応答待ち状態に陥った場合はCTRL+CキーでBASICプログラムを強制中断してください。


var CM$, R$(4-1), I%, J%
baud 0,9600
CM$="COM0:(S7N2N7NNN)"
open CM$ for output as #2
open CM$ for input as #1
WAIT 100

if not eof(1) then print "Error:受信バッファが空でない!":close:stop:end

print"!!送信始!!"
print#2,"D";chr$(13);
wait 50

while eof(1) :print"*"; :wait 5 :wend ' 受信開始までループ
print:print"!!受信始!!"
wait 5
while lof(1) < 14*4 :print"."; :wait 5 :wend ' 全フレーム受信までループ
print:print"!!受信終!!"

line input#1,R$(0) :print "!!Frame-1入力終"
line input#1,R$(1) :print "!!Frame-2入力終"
line input#1,R$(2) :print "!!Frame-3入力終"
line input#1,R$(3) :print "!!Frame-4入力終"
close

for I%=0 to 4 - 1
if len(R$(I%))=0 then R$(I%)=space$(14 - 1)
for J%=1 to len(R$(I%))
' もし、ヌルキャラクタがあれば空白に置き換え
if asc(mid$(R$(I%),J%,1))=&H0 then mid$(R$(I%),J%,1)=" "
next J%,I%
print "1):";R$(0) ;"<"
print "2):";R$(1) ;"<"
print "3):";R$(2) ;"<"
print "4):";R$(3) ;"<"

stop : end

 ちなみに特殊な書き方として「open CM$ as #1」と書くとopen命令を1本にできます。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板