|
▼やすじ さん:
こんにちは。
すみませんもう少し確認したいのですが、
> lErr = ReadDevice16("KML", "D10WORD", rData1, 1)
> ’↑簡易DLLのプログラム。データの読み込みを行っている。
> ’KMLは設定データの名前で、D10WORDはデータが入っている場所で、
> ’rData1は読み出したデータを格納する場所、最後の1はデータの数となっている
このDLLで何のデータを読んでいるのでしょうか?
CSV・テーブル・Iniファイルとか色々あるかと思いますが。
後、dllからのレスポンスがどれぐらいとか見られてますか?
それと一括取得は試されたということですがこんな感じの
取得でしょうか?
サンプル例:
'格納するグローバル変数
Public m_dlldata() As Integer
'読み込み中ロック
Public m_DllLock As Boolean
Sub form1のタイマーイベント()
Dim getdata As Integer
If dll_Read_Process = True Then
'読み込み中ロック解除
m_DllLock = False
getdata = Get_dll_data( 1 ) 'フォーム1のデータを取り出す
End If
End Sub
'/**dllの一括に読み込む処理**/
Function dll_Read_Process() As Boolean
On Error GoTo dll_Read_Error
dll_Read_Process = False
Const maxdata As Integer = 5
Dim i As Integer
Dim lErr As Integer
'読み込み中ロック
m_DllLock = True
'格納データ動的配列定義
ReDim m_dlldata(maxdata)
For i = 1 To UBound(m_dlldata)
lErr = ReadDevice16("KML", "D10WORD", m_dlldata(i), 1)
If lErr <> 0 Then
m_dlldata(i) = -1 'サンプルとしてエラー戻り値を-1にする
End If
Next i
dll_Read_Process = True
Exit Function
'エラー処理
dll_Read_Error:
dll_Read_Process = False
MsgBox Err.Number & ":" & Err.Description, vbCritical + vbOKOnly, "dll読み込みエラー"
End Function
'/**変数に代入された内容を取り出す処理**/
Function Get_dll_data(FormIndex As Integer) As Integer
On Error GoTo Get_dll_data_Error
Dim m_getdata As Integer
If (m_DllLock = True) Then
m_getdata = -1 '読み込み中の場合エラー
ElseIf (FormIndex <= UBound(m_dlldata)) Then '必要データ分配列が用意されているか判定
m_getdata = m_dlldata(FormIndex) '正常の場合
Else
m_getdata = -1 'エラーの場合
End If
'結果を代入
Get_dll_data = m_getdata
Exit Function
'エラー処理
Get_dll_data_Error:
m_getdata = -1
Get_dll_data = m_getdata
End Function
|
|