[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
1-
101-
201-
301-
401-
501-
601-
701-
この機能を使うにはJavaScriptを有効にしてください
|
■■■20レス以内で済むF-BASICの質問はこちらへ■■■
599
:
598
:2015/06/06(土) 07:41:31
>>597
サンプルプログラムを例示します。(「構造体」を使った例)
倍精度浮動小数点が、x86系CPUのWindowsアプリでよく使われる形式であると
みなし、受信データを「構造体」を使って倍精度浮動小数点型の変数に、
メモリ上でバイナリそのままで転記して取り出しています。
※CALLEVENT と#include "WINDOWS.BI" は必要なければはずしてください。
[注]:字下げのために全角空白を使ってます。半角に置き換えてください
#include "WINDOWS.BI"
#include "F1A0LWIC.BI" '<--ライブラリが必要な場合
'24Byte長レコード(8Bytex3)
type T_RCVDT
X as double
Y as double
Z as double
end type
'データ受入用(バイナリ24Byte)
type T_RCVDT_WK
DT as string * 24
end type
var RCVDT as T_RCVDT
var BUFWK as T_RCVDT_WK
baud 0,9600
open "COM0:" for input as #1
do while eof(1) '受信開始待ち
CALLEVENT
loop
'1件分データ入力(24Byte)までループ
do
if lof(1) >= 24 then
' 1件の受信データ読み込み(バイナリ)
BUFWK.DT = INPUT$(24, #1)
' 構造体を通してバイナリを各変数に格納
LSET RCVDT = BUFWK
exit do 'ループ脱出
end if
CALLEVENT
loop
close #1
'データを画面に表示
print "X="; RCVDT.X
print "Y="; RCVDT.Y
print "Z="; RCVDT.Z
浮動小数点の形式が異なるため、エラーや数値がでたらめになる場合はとりあえず、
「X as double」などを「X as string * 8」などに書き換え、
変換関数のどれか適切なものを使って「CVD(RCVDT.X)」、倍精度の実数に変換
してみてください。
注意:CVD関数以外は数値変換拡張ライブラリ「F1A0LC63.LIB」が必要。
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板