HAMLOG プログラム開発室


新着表示
タイトル
記事No
投稿日
投稿者
参照先
Re: dbf_rcount
117
2009/07/22(Wed) 10:04:21
JA2BQX 太田

HDBの全てをCSVに書き出しも出来るようになりました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: dbf_rcount
116
2009/07/22(Wed) 08:44:01
JA2BQX 太田

ありがとうございました。
お陰様でレコード件数表示ができました。

> 私がテストしたコードをそのまま書きます。

こちらでのテストではそのままのコピー・ペーストでは幾つかのエラーがでましたので

> Dim tdbfh As TDBFh を
    Dim th As TDBFh に書き換え。


> Dim th As TThLog を
Dim log As TThLog に書き換え。

私のコードで何が悪かったのかは後で考えて見ます。
まずは Hamlog.hdb を直接読み書き出来る入り口にたどり着きました。
HDBの全てをCSVに書き出しとか、色々試して見ます。
分からない事があったらまた書き込みさせて頂きますので
今後ともよろしくお願いします。

MNI TNX and FB DX   CUL
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: dbf_rcount
115
2009/07/22(Wed) 08:20:51
jr1cpb/稲村
おはようございます。
私がテストしたコードをそのまま書きます。
Formを1つ、そこにButtonを一つ貼り付けます。
オープン/クローズ、レコード数取得、hdbからの読み出し(詳細は書きませんでしたが)
もできています。

Public Class Form1
Declare Function dbf_open Lib "Hamlog50.dll" (ByVal s As String, ByRef d As TDBFh) As Integer
Declare Sub dbf_close Lib "Hamlog50.dll" (ByRef d As TDBFh)
Declare Function dbf_rcount Lib "Hamlog50.dll" (ByRef d As TDBFh) As Integer
Declare Function Vdbf_open Lib "Thdll2Vb.dll" (ByVal s As String, ByRef d As TThLog) As Integer
Declare Sub Vdbf_close Lib "Thdll2Vb.dll" (ByRef d As TThLog)
Declare Function Vdbf_rcount Lib "Thdll2Vb.dll" (ByRef d As TThLog) As Integer
Declare Function HamlogOpen Lib "Hamlog50.dll" (ByVal h As Integer, ByRef th As TThLog, ByVal f As String, ByVal v As Integer) As Integer
Declare Sub HamlogClose Lib "Hamlog50.dll" (ByRef th As TThLog, ByVal i As Integer)
Declare Function ThwString Lib "Thdll2Vb.dll" (ByVal s As String, ByRef th As TThLog, ByVal n As Short) As Integer
Declare Function THW_read Lib "Hamlog50.dll" (ByRef h As TThLog, ByVal n As Integer, ByVal i As Integer) As Integer

Structure TDBFh
Dim lupdt() As Byte
Dim Rcount As Integer
Dim hsize As Integer
Dim recnm As Integer
Dim fHdl As Integer
Dim Temp() As Byte
Public Sub Initialize()
ReDim lupdt(4)
ReDim Temp(260)
End Sub
End Structure

Structure TThLog
Dim Qso() As Byte ' Ver5.03で変更
Public Sub Initialize()
ReDim Qso(3927)
End Sub
End Structure

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sd As Integer
Dim recno As Integer
Dim tdbfh As TDBFh
Dim th As TThLog
Dim f As String

f = "C:\Hamlog.hdb"
sd = dbf_open(f, tdbfh)
recno = dbf_rcount(tdbfh)
dbf_close(tdbfh)
sd = Vdbf_open(f, th)
recno = Vdbf_rcount(th)
Vdbf_close(th)
sd = HamlogOpen(0, th, f, 0)
Call HamlogClose(th, 1)
End Sub
End Class
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: dbf_rcount
114
2009/07/22(Wed) 06:50:23
JA2BQX 太田

jr1cpb 稲村さん、ありがとうございます。

> やってみましたらうまくレコード件数取得できているようです。
> 構造体の定義を下記のようにしています。

今回、ご提示いただいた宣言に近いものはWeb検索で見たりもしましたが
完全なコードに書き換えが出来ないでいました。
まだHDBのオープンに失敗しているようです。
他にコードミスなど、お気づきでしたら教えて下さい。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: dbf_rcount
113
2009/07/22(Wed) 06:46:30
JA2BQX 太田

JO1SIM出島さん、ありがとうございます。

> dbf_openやVdbf_openの返す値はどうでしょうか?
> 正常にオープンされていれば SUCCESS(==0) が帰ってきていると
> おもうのですが、いかがでしょうか?

上手くオープンしていません。 返値が5です。

> C++ならば、Pathの文字列の中の \ は \\じゃないとダメとか…なんですが!

下記のサンプルを見ると \ や / を使っていたりするので
大丈夫と思います。

http://hanatyan.sakura.ne.jp/dotnet/index.html
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: dbf_rcount
112
2009/07/21(Tue) 23:22:16
jr1cpb/稲村
こんばんは、
やってみましたらうまくレコード件数取得できているようです。
構造体の定義を下記のようにしています。

Structure TThLog
Dim Qso() As Byte
Public Sub Initialize()
ReDim Qso(3927)
End Sub
End Structure
Structure TDBFh
Dim lupdt() As Byte
Dim Rcount As Integer
Dim hsize As Integer
Dim recnm As Integer
Dim fHdl As Integer
Dim Temp() As Byte
Public Sub Initialize()
ReDim lupdt(4)
ReDim Temp(260)
End Sub
End Structure
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: dbf_rcount
111
2009/07/21(Tue) 22:05:55
JO1SIM 出島
太田様
JO1SIM出島です。
私はVBではなく、VC(しかもMFC)派なので詳しくはありませんが・・・。

dbf_openやVdbf_openの返す値はどうでしょうか?
正常にオープンされていれば SUCCESS(==0) が帰ってきていると
おもうのですが、いかがでしょうか?

C++ならば、Pathの文字列の中の \ は \\じゃないとダメとか…なんですが!


> こんにちは。
> 昨日よりVB2008を勉強中です。
> WndProc を使用しての Hamlogよりのデータ取得は出来る様になりました。
>
> 次にHDBに直接アクセスするテストをしていますが入り口でつまずいています。
> 下記のコードで ver = GetThdllVersion() に関してはVB6と同じ値が取れました。
>
> C:\Windows\System32\Hamlog.dll
> タイムスタンプ 値
> 2008-06-19 331776
> 2009-05-23 332544
>
> しかしレコード件数の取得がダメです。
> sd = dbf_open("C:\HAMLOG\Hamlog.hdb", Th)
> recno = dbf_rcount(Th)
> ...では ゼロ件と表示されます。
>
>
> sd = Vdbf_open("C:\HAMLOG\Hamlog.hdb", log)
> recno = Vdbf_rcount(log)
> ...ではマイナスになったり極端に大きな数値になったりでダメです。
>
> どなたか上手く動作しておられたらご指導お願いします。
> (図表モードでもインデントが取れなくて見難いですね)
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
dbf_rcount
110
2009/07/21(Tue) 17:17:45
JA2BQX 太田

こんにちは。
昨日よりVB2008を勉強中です。
WndProc を使用しての Hamlogよりのデータ取得は出来る様になりました。

次にHDBに直接アクセスするテストをしていますが入り口でつまずいています。
下記のコードで ver = GetThdllVersion() に関してはVB6と同じ値が取れました。

C:\Windows\System32\Hamlog.dll
タイムスタンプ 値
2008-06-19 331776
2009-05-23 332544

しかしレコード件数の取得がダメです。
sd = dbf_open("C:\HAMLOG\Hamlog.hdb", Th)
recno = dbf_rcount(Th)
...では ゼロ件と表示されます。


sd = Vdbf_open("C:\HAMLOG\Hamlog.hdb", log)
recno = Vdbf_rcount(log)
...ではマイナスになったり極端に大きな数値になったりでダメです。

どなたか上手く動作しておられたらご指導お願いします。
(図表モードでもインデントが取れなくて見難いですね)



Imports System
Imports System.Windows.Forms
Imports System.Runtime.InteropServices

Public Class Form1

Structure TDBFh
Dim lupdt() As Byte
Dim Rcount As Integer
Dim hsize As Integer
Dim recnm As Integer
Dim fHdl As Integer
Dim Temp() As Byte
Public Sub Initialize()
ReDim lupdt(4)
ReDim Temp(260)
End Sub
End Structure


Structure TThLog
Dim Qso() As Byte
Public Sub Initialize()
ReDim Qso(3927)
End Sub
End Structure

_
Private Shared Function GetThdllVersion() As Integer
End Function


_
Private Shared Function dbf_open(ByRef s As String, ByRef d As TDBFh) As Integer 'ByValをByRefに変更
End Function

_
Private Shared Sub dbf_close(ByRef d As TDBFh)
End Sub

_
Private Shared Function dbf_rcount(ByRef d As TDBFh) As Integer
End Function


_
Private Shared Function Vdbf_open(ByRef s As String, ByRef d As TThLog) As Integer
End Function

_
Private Shared Sub Vdbf_close(ByRef d As TThLog)
End Sub

_
Private Shared Function Vdbf_rcount(ByRef d As TThLog) As Integer
End Function

Public log As TThLog
Public Th As TDBFh

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim ver As Int32
Dim sd As Int32
Dim recno As Int32

ver = GetThdllVersion()
Label1.Text = ver

'dbf_close(Th)

'sd = dbf_open("C:\HAMLOG\Hamlog.hdb", Th)
'recno = dbf_rcount(Th)
'dbf_close(Th)

sd = Vdbf_open("C:\HAMLOG\Hamlog.hdb", log)
recno = Vdbf_rcount(log)
Vdbf_close(log)

Label2.Text = recno

End Sub


End Class
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: データの表示方法をご教授ください
109
2009/07/19(Sun) 13:59:03
JA1RNR 吉田康太郎
JR1CPB 稲村さん、こんにちは。

はい、無料で利用できるので助かっています。
おかげさまで、太田さん、大塚さんから貴重なソースの公開をしていただき、Hamlogデータのやり取りの基本ができるようになりました。
最近は7MHzの伝搬状態がよくありませんので、少しプログラミング勉強をしたいと思い取り掛かかりました。

> .NET ExpressEditionは無料の開発環境なので、プログラミングの
> 勉強には最適ですね.
> 私もVB.NETでTh505apiを利用するプログラミングで躓いたままに
> なっていましたが、大塚さんと吉田さんのスレッドを見てまたや
> る気になりました。Hi
> おかげさまで、hdbからの交信データの読み出しや、入力ウィンド
> ウの項目の受け渡しができるようになりました。
> 簡単な交信データの集計をするプログラムを作ったりしています。
>
> 吉田さん、ご健闘ください。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: データの表示方法をご教授ください
108
2009/07/19(Sun) 13:46:06
JA1RNR 吉田康太郎
JA2GRC/3/大塚さん、はじめまして。

太田さんからWndprocのご助言を、さらに大塚さんから具体的なソースを公開していただき、まことに有難うございました。
おかげさまでHamlogデータの取り込みができました。
重ねて御礼を申し上げます。

私には大変難解でした。大塚さんの作製された部分をデッドコピーさせていただき、Hamlogデータを取り込めることができました。

私は、PSK31の運用に、MixWを使っています。
MixWのログファイルは、簡単な構造ですので、Hamlogで読めるCSV形式に変換するプログラムをVB2008(2005)で作成しHamlogに結合しています。

そこで、もう少しスマートにデータのやり取りができないものかと思い今回の課題に取り掛かった次第です。

大塚さん、太田さん重ねて御礼申し上げます。

> 昨日、KANHAM 2009でJA2BQX/太田さんにお会いして、この開発室で、
> VB2008 Ex. Ed. に関する質問が出ていることを聞きました。
>
> もし、まだ、解決されていないのなら、以下の記事を参考にされて
> ください。
>
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop