-
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
-
2日前ですが、富士通パソコンのESPRIMOのWindows10のUpdate(更新してシャットダウンで)を行ったのですが、
翌日、ESPRIMOの電源ONで「FUJISTU」のロゴ表示でハングアップしてしまいました。
「FUJISTU」のロゴでハングアップの原因を調べてみると、どうも「BIOS」設定値の書き変えでの不具合の様です。
それで、ESPRIMOの筐体を開けて、CMOSのバックアップ電池を取り外し再度、装着後に試しても結果は同じでした。
ESPRIMOに接続されている「HDD」「ネット」等を外し、「CPU + PS/2キーボード + 表示画面 + マウス」にして
さらに、バックアップ電池(CR-2032)も新品を買ってきて入れ替えて試してみました。
結果は「FUJISTU」のロゴでハングアップで変化はありませんでした。
このESPRIMOですが、仕事で使用しているので、「HDD」のデータでも生かそうと思って、
「SATA USB3.0接続 2.5/3.5インチ 変換アダプター」を購入することになりました。
この変換アダプターにはHDDの2.5/3.5インチに対応するものですが、価格が安いと2.5インチにしか対応できない様なので注意が必要です。
「UGREEN SATA USB変換ケーブル sata usb 変換アダプター USB3.0接続 2.5/3.5インチ 6TB HDD/SSD用 電源アダプター付き UASP対応 6Gbps転送速度」
そうこうしているうちに、今日になってYahooを見ると、
「2015~2017年に発売された富士通製デスクトップPCで「Windows Update」後に起動できない事象 大塚商会」
の記事が出ていました。
これに関連したニュースの続報が無いのですが、今日は未だ土曜日なので、明後日の月曜日には何らかの発表があるのではと期待しています。
それにしても、今回の調査などで1日がつぶれてしまいましたが、ESPRIMOが動作する様になればいいのですが...
やはりESPRIMOを「Windows10」⇒「Windows11」へのバージョンアップを行うか、
「Windows11」パソコンを導入するかを思案しています。
PR -
古いソフトのヘルプファイル(ファイル拡張子は CHM )の場合が開けないことがあります。 chmファイルは古い規格で内部的にHTMLで書かれているようです。 そのため、最近はWindows のセキュリティの関係から直接は見れない様になっています。
以下の方法でセキュリティ関係を解除してやれば見ることができます。
chmファイルの名前の所で右クリックをして、「プロパティ」を選択します。 そこで「ブロックの解除」のボタンをクリックします。
「ブロックの解除」のボタンがグレー表示になりますので、 「適用」ボタンまたは「OK」ボタンをクリックします。
その後、chmファイルをダブルクリックで起動すれば内容が見えるはずです。
=====
2016/04/02:の時の情報
-
私事なのですが、最近収めたシステムで客先より「エラーコードが3DHが表示されてデータが登録できない」との連絡在りました。 3DH のエラーコードの内容は取説より
「3Dh:FIELD ステートメントで指定されたフィールド幅が、ファイルと異なっています。」
とのこと、こちらでいくら再現しようとしてもエラーが発生しませんでした。
そこで客先で該当するデータファイルの情報をシステムメニューから表示してもらったところ、 データファイルのフォーマットが昔のままで、そのためにエラーが発生している様でした。
(最初に納入したプログラムで動作させてそのままにしておいて、 フォーマットが変更された最新のプログラムを動作させて為に発生しました)
この FIELD命令 ですが、既に存在するファイルと違っている場合に 新しい FIELD命令 では機能せずにエラーが発生します。
以下に FIELD命令 でエラーが発生するソースを記します。 最初の FIELD命令 で作成された「TEST.DAT」は2個のカラムを持っていますが、 2度目の FIELD命令 でエラーが発生します。
Main SCREEN 1 '漢字モード LOCATE , , 2 'カーソルをブロック表示 ON ERROR GOTO MAIN.ERR 'FIELDのカラム数の定義 Const COL.CD% = 4 Const COL.NUM% = 8 'TEST.DATファイルを、ファイル番号#1としてオープンします PRIVATE FILENO%, strCD$, lngNum&, REC.CD$, REC.NUM$ FILENO% = 1 OPEN "TEST.DAT" AS FILENO% RECORD 2147483647 FIELD #FILENO%, COL.CD% AS REC.CD$, COL.NUM% AS REC.NUM$ strCD$ = "1" lngNum& = 1000 REC.CD$ = LEFT$(strCD$ + " ", COL.CD%) '既定の桁数分スペースを付加 REC.NUM$ = RIGHT$(" " + STR$(lngNum&), COL.NUM%) '既定の桁数分スペースを付加 '書込み PUT #FILENO% 'クローズ CLOSE #FILENO% 'FIELDのカラム数の追加定義 Const COL.DTX% = 4 PRIVATE strDTX$ OPEN "TEST.DAT" AS FILENO% RECORD 2147483647 'カラム数を追加してFIELD文 FIELD #FILENO%, COL.CD% AS REC.CD$, COL.NUM% AS REC.NUM$, COL.DTX% AS strDTX$ '書込み PUT #FILENO% 'クローズ CLOSE #FILENO% ' WAIT 0, &H1 END MAIN.ERR PRINT "ERL=";ERL;" ERR=";HEX$(ERR); WAIT 0, &H1 END
このプログラムを実行すると以下の画面になります。
エラーコードが「3D」で、 FIELD命令 でのエラーであることがわかります。
データファイルのフォーマットが変更された場合には、手動でハンディターミナル内部の該当ファイルを削除するか、 もしくは、プログラムで判定して削除してから、再度の FIELD命令 を行う必要があると思います。
=====
2016/04/02:の時の情報
-
Bluetooth通信を備えたハンディスキャナではその通信でプリンタなどへの データの送受信ができます。
■Bluetooth機器との送受信について
Bluetooth通信で外部機器とデータの送受信を行う場合は、以下の一連の命令の実行で行います。
・OPEN命令によりBluetoothデバイスファイルをオープンする。
(リモートデバイスへのシリアルポート接続が行われる)
・シリアル通信処理を行う。
(送信処理:PRINT #命令)
(受信処理:INPUT$関数、LOC関数、EOF関数などを使用)
・バーコードバッファから読込まれた文字列を取得する。
・CLOSE命令によりBluetoothデバイスファイルをクローズする。
Bluetoothデバイスのオープンの OPEN命令 について説明します。
[書式] OPEN "COM4:M, サービスプロファイル [, [デバイスアドレス][, [パスキー][, [タイムアウト] [, [セキュリティモード]]]]]" AS [#] ファイル番号 <引き数> ・[COM4:M]は自分自身をマスタとして接続先をスレーブとする ・サービスプロファイル ■SDAP:サービス検索 ■SPP:シリアルポートプロファイル ■DUN:ダイヤルアップ接続プロファイル ・[デバイスアドレス]:Bluetooth デバイスアドレス 12 文字の16 進数文字列で指定 ・[パスキー]:Bluetooth パスキー ・[タイムアウト]:接続が完了までの最大待ち時間(1~255秒) ・[セキュリティモード]:接続時のセキュリティモード 1:セキュリティなし 2:セキュリティあり 3:セキュリティあり、暗号化あり 4:シンプルペアリング
上記の他の詳しい内容については各BHTの取説を見てください。
■オープン指定の例
OPEN "COM4:M,SPP,112233AABBCC,,30,1" AS #2
この例では自分自身をマスタとして、 シリアルポートプロファイルを使用してBluetooth 通信行います。 Bluetooth デバイスアドレスは 112233AABBCC で、接続タイムアウトは30秒です。
このオープン例を使ったプログラムは以下の様になりますが、 各機器に合わせてシリアル送受信処理は組む必要があります。
'Bluetoothオープン OPEN "COM4:M,SPP,112233AABBCC,,30,1" AS #2 'シリアル通信処理 '--データ送信処理-- PRINT #2,"TESTDATA"; '送信データは仮のもの '--データ受信処理-- 'ここにINPUT$関数などでデータを取得し、 '各機器ごとに合わせた処理を記述する 'Bluetoothクローズ CLOSE #2
■Bluetoothデバイスアドレス取得について
対応する機器のアドレスが前もってわかっているのであれば、 直接そのアドレスをプログラムに埋め込んでもいいのですが、 実際の場合は機器交換などもありますので、 Bluetoothデバイスから通信で取得できた方がいいと思います。
Bluetoothデバイスアドレス取得を行う簡単なプログラムを以下に示します。
SCREEN 1 '漢字モード LOCATE , , 2 'カーソルをブロック表示 PRIVATE I% PRIVATE strBtAddr$(7)[12] 'Bluetoothデバイスアドレス PRIVATE intBtNum% 'Bluetoothデバイス数 'Bluetooth検出オープン OPEN "COM4:I,60,1" AS #2 ' デバイス検出時間:60秒 '検出機器数:8台 intBtNum% = 8 '検出結果を読み出し CALL "BT.FN3" .fcBTInqRes intBtNum%, strBtAddr$() 'Bluetooth検出クローズ CLOSE #2 '検出したBluetoothアドレス表示 PRINT "BlueTooth-Addr" FOR I% = 0 TO 7 PRINT "Addr" + STR$(I%) + ":" + strBtAddr$(i%) NEXT I% WAIT 0, &H1 END
Bluetooth機器が複数あった場合にはその台数分のアドレスが検出できます。 但し、1台だけに絞る場合は、対象Bluetooth機器のみを電源投入し検出すればできるとは思います。
=====
2016/04/02:の時の情報
-
以前、ハンディターミナル側から送受信を行う関数等の記事を掲載してきましたが、 ハンディターミナルの相手側としてのパソコン側のプログラムが必要になります。
パソコン側のファイル送受信用のツールがDLLの形でDENSOさんの方から提供されています。 以下の所にDENSOのURLを貼っておきますので、そちらを参照下さい。
・BHT-BASIC4.0転送ユーティリティ
このユーティリティを購入して、送受信を行うパソコンにライセンス登録が必要です。 プログラムのインストールなどは無く、必要なDLL等を実行プログラムのフォルダに登録します。 この辺りのことは購入後、取説をDENSOからダウンロードし確認してみて下さい。
■VB.NETプログラムの場合の必要なDLL
VB.NETのプログラムの実行フォルダ内に以下のDLL等が必要です。
・Bhtprtdm.dll -- BHT-BASIC4.0 転送ユーティリティライブラリ ・Bhtprt.ini -- BHT-BASIC4.0 転送ユーティリティライブラリ設定 ・Ymodem_pd.dll -- YMODEMプロトコルライブラリ ・BHTIr_pd.dll -- BHT-Irプロトコルライブラリ
実際の転送処理で呼出すのはBhtprtdm.dllで、その中の送受信関数(ExecProtocol)を呼出して処理をさせます。
Declare Function ExecProtocol Lib "Bhtprtdm.dll" (_ ByVal hWnd As IntPtr, _ ByVal Param As String, _ ByVal FileName As System.Text.StringBuilder, _ ByVal Protocol As Integer) As Integer [引数] hWnd :DLLを呼び出すウィンドウハンドルを設定 Param :ファイル転送の動作を制御するオプションの文字列 (1つのファイル名と複数のオプションをスペースで区切った文字列) FileName:転送したパス名/ファイル名を格納 Protocol:プロトコル番号を指定 [戻り値] Integer型の値で、0(Er_NOERROR)はエラー無しで、 0以外は伝送エラー在り (エラー内容はDENSO提供のBASICソースを参照)
上記のほかにいろんな指定がありますが、それは各BHTの取説を見てください。
■オプションの文字列
オプション 内容 デフォルト 【伝送速度】 +B
"+B9600" 9600 bps "+B19200" 19200 bps "+B38400" 38400 bps "+B57600" 57600 bps "+B115200" 115200 bps "+B230400" 230400 bps "+B460800" 460800 bps
YMODEM時 "+B115200" BHT-Ir時 "+B9600"
【通信ポート】 +Pn
+Pn (n = 1 ~ 99)
"+P1" 【ファイルフィールド】 +Fn +F -F
[+Fn]の場合:"+Fa,b,c..." a:フィールド1桁数 b:フィールド2桁数 c:フィールド3桁数 ... [+F]の場合:既存フィールドファイルによる (YMODEMのみ) ※受信の場合はフィールドファイルを受信しない [-F]の場合:フィールド指定なし(YMODEMのみ)
【伝送方向】 +R -R
"+R" ファイル受信 "-R" ファイル送信
"-R" 【追加書込】 +A -A
"+A" 既存データファイルに追加書込み "-A" 追加書き込みしない
"-A" 【CR-LFの扱い】 +C -C
"+C" CR-LFをデータとする "-C" CR-LFをレコードの区切り
"-C"
オプション文字列の一般的な例としては以下の様になります。送信の場合:"TEST.DAT +P5 +F16,12 -R" 受信の場合:"TEST.DAT +P5 +F16,12 +R"
この場合、YMODEMでの伝送を想定していて、 通信ポートはパソコンにUSB-COMポートをインストールした時に COM5 になったので"P5"としています。
また、フィールド指定は以下の記事のデータファイルを使っています。
・BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
■VB.NETの送受信テストプログラム
上記のオプション例を使った簡単なVB.NETのテストプログラムを以下に示します。
Module Module1 Declare Function ExecProtocol Lib "Bhtprtdm.dll" ( _ ByVal hWnd As IntPtr, _ ByVal Param As String, _ ByVal TransferFileName As System.Text.StringBuilder, _ ByVal ProtocolType As Integer) As Integer End Module Public Class Form1 '送信処理ボタン Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Const PRTCL_YMODEMBATCH As Short = 2 Dim iRet As Integer Dim strFile As System.Text.StringBuilder = New System.Text.StringBuilder Dim strOption As String 'オプションの編集 strOption = "TEST.DAT +P5 +F16,12 -R" '"-R"送信 'ファイル転送 iRet = ExecProtocol(Me.Handle, strOption, strFile, PRTCL_YMODEMBATCH) '戻り値のチェック If iRet <> 0 Then MsgBox("Err Code = " & iRet.ToString() & " : File[" & strFile.ToString() & "]") Else MsgBox("送信OK...File[" & strFile.ToString() & "]") End If Catch ex As Exception MsgBox(ex.ToString) End Try End Sub '受信処理ボタン Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try Const PRTCL_YMODEMBATCH As Short = 2 Dim iRet As Integer Dim strFile As System.Text.StringBuilder = New System.Text.StringBuilder Dim strOption As String 'オプションの編集 strOption = "TEST.DAT +P5 +R" '"+R"受信 'ファイル転送 iRet = ExecProtocol(Me.Handle, strOption, strFile, PRTCL_YMODEMBATCH) '戻り値のチェック If iRet <> 0 Then MsgBox("Err Code = " & iRet.ToString() & " : File[" & strFile.ToString() & "]") Else MsgBox("受信OK...File[" & strFile.ToString() & "]") End If Catch ex As Exception MsgBox(ex.ToString) End Try End Sub End Class
フォームの画面表示は以下の感じです。 送信ボタンと受信ボタンをフォームに配置しそれぞれのボタンクリックで送受信処理を行っているだけです。 受信時のオプションはフィールド指定が無い違いがあります。
■BHT-BASICの送受信テストプログラム(ハンディ側)
ハンディターミナル側の簡単な受信・送信テストプログラムを以下に示します。
'--------------------------------------- 'ファイル送信 '--------------------------------------- 'Function GfSndFile%(pintFp%, pstrSpeed$, pstrFile$, pstrOption$) '引 数: ' pintFp% :ファイル番号 ' pstrSpeed$ :送信スピード ' pstrFile$ :送信ファイル名 ' pstrOption$ :送信オプション '戻り値: ' GfSndFile% :送信OK(GcTrue%)NG(GcFalse%) '--------------------------------------- Function GfSndFile%(pintFp%, pstrSpeed$, pstrFile$, pstrOption$) On Error Goto GfSndFile.ErrProc OPEN "COM1:" + pstrSpeed$ AS pintFp% XFILE pstrFile$, pstrOption$ GfSndFile% = GcTrue% GfSndFile.Return '終了処理 CLOSE pintFp% On Error Goto 0 Exit Function '----- 'エラー処理 '----- GfSndFile.ErrProc GfSndFile% = GcFalse% Resume GfSndFile.Return End Function '--------------------------------------- 'ファイル受信 '--------------------------------------- 'Function GfRcvFile%(pintFp%, pstrSpeed$, pstrFile$, pstrOption$) '引 数: ' pintFp% :ファイル番号 ' pstrSpeed$ :受信スピード ' pstrFile$ :受信ファイル名 ' pstrOption$ :受信オプション("R")以外のオプション '戻り値: ' GfRcvFile% :受信OK(GcTrue%)NG(GcFalse%) '--------------------------------------- Function GfRcvFile%(pintFp%, pstrSpeed$, pstrFile$, pstrOption$) On Error Goto GfRcvFile.ErrProc OPEN "COM1:" + pstrSpeed$ AS pintFp% OUT &h6060, 3 'YMODEM XFILE pstrFile$, "R" + pstrOption$ GfRcvFile% = GcTrue% GfRcvFile.Return '終了処理 CLOSE pintFp% On Error Goto 0 Exit Function '----- 'エラー処理 '----- GfRcvFile.ErrProc GfRcvFile% = GcFalse% Resume GfRcvFile.Return End Function '--------------------------------------- 'メイン処理開始 '--------------------------------------- SCREEN 1 '漢字モード LOCATE , , 2 'カーソルをブロック表示 PRIVATE intRet% PRINT "受信開始:"; intRet% = GfRcvFile%(1, "115200", "TEST.DAT", "PTM") '受信 PRINT "GfRcvFile%=" + STR$(intRet%) WAIT 0, &h01 'キー入力待ち PRINT "送信開始:"; intRet% = GfSndFile%(1, "115200", "TEST.DAT", "PTM") '送信 PRINT "GfSndFile%=" + STR$(intRet%) WAIT 0, &h01 'キー入力待ち END
■VB.NETの送受信テストプログラムの実行送信時の画面は、以下の様にYMODEM送信のダイアログが表示されて、 件数の様な数字がカウントアップします。
送信処理後に、 TEST.DAT の存在するフォルダを確認すると TEST.FLD ファイルが作られているのがわかります。 この TEST.FLD ファイルの内容は以下の様にフィールドの定義ファイルの様です。* created by BHT-BASIC 4.0 Transfer Utility DLL Version 1.14 * Copyright (C) DENSO WAVE INC. 2001-2013 all rights reserved file TEST.DAT fields 16 12
受信時の画面は、以下の様な表示になります。
受信後は、ハンディから送られてくる TEST.FLD ファイルが生成される様です。 以下はその内容です。* created by BHT file TEST.DAT size 150 records 5 fields 16 12
=====
2016/04/02:の時の情報