新着表示
タイトル
記事No
投稿日
投稿者
: Re: memcpy()
: 832
: 2017/11/04(Sat) 22:11:39
: JG1MOU浜田
> これはコンパイラか標準ライブラリにバグがあるということでしょうか?自分はmemcpy()をよく使うもので、心配になりました。
大庭さん、その節は大変お世話になりました。
これは、私が使っている大昔の Borland C++ 5.02Jでの話です。
なんせ1997年製ですから。Hi
バグではないと思うのですが、最適化の過程でおかしなコードが生成
されているのか、メモリリークなのか、わかりません。
私の場合は、数ヶ月に一度、お目にかかれるかどうかのエラーです。
人によっては、ハムログが落ちてしまうそうですので、動作環境に
よるみたいです。
Visual C++に移植すれば問題なくなるのかもしれませんが、定年後に
時間的な余裕ができたら、遊んでみたいと思ってます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: memcpy()
: 831
: 2017/11/04(Sat) 21:39:31
: JA7UDE 大庭
浜田さん、こんばんは、
これはコンパイラか標準ライブラリにバグがあるということでしょうか?自分はmemcpy()をよく使うもので、心配になりました。
73
大庭
JA7UDE
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: memcpy()
: 830
: 2017/11/04(Sat) 19:22:39
: JG1MOU浜田
HAMLOG50.DLLからのエラーでは、コンパイラの最適化によりmemcpy関数
からエラーが出ているような気がしまして、気のせいかもしれません
けど、memcpy()をまったく使わないようにしてみました。
メモリブロックをコピーする関数です。
DOS版のときは、Cのソースコードにアセンブラのストリング命令を
入れて、一気にコピーしていたのですが・・・
asm sub si, ax
asm sub di, ax
asm shr cx, 1
asm rep movsw ・・・みたいな・・・
今の32ビットコンパイラでは、別途アセンブラを用意しなければ
ならないので、インラインアセンブラが使えません。
そこで、DWORDにキャストして4バイトずつコピーしてやれば少し速い
かなぁーなんて。 次のように・・・
void __fastcall StrLCopy(char *dest, const char *src, int Count)
{ while (Count >= sizeof(DWORD))
{ *(DWORD *)dest = *(DWORD *)src; // 4バイトコピー
dest += sizeof(DWORD);
src += sizeof(DWORD);
Count -= sizeof(DWORD);
}
while (Count > 0) { // 残り3バイト以下
*dest++ = *src++;
Count--;
}
*dest = (char)0x00;}
結果、一億回ほどループさせて呼び出してみると、少し速いような気が
しました。
ま、エラーが出なくなれば、それでよろし。
http://hamlog.no.coocan.jp/mou/index.html以上、晩酌プログラミングでした。Hi
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: JTDX の表示文字列の取得
: 829
: 2017/11/04(Sat) 12:39:52
: JA9AOB 銅子
> 私も、同じようなことを考えて、WSJT_Xの画面内に表示されている文字列を別のソフトに転送したいと思いましたが、、、できませんでした。Windows用として作られたソフトなら、各エディットボックスのハンドルが分かるので、取り出せるし、書き込むことも出します。しかし、WSJT_Xはリナックスか何か良く分かりませんが、全く違ったプログラミングソフトを使っているのでしょうかね??? と言うことで、JTDXも同じく読み書きできそうにありませんね。
> 何か方法が見つかったら、お教え下さいな。
私も最近JT65からFT8モードに運用を移行しました。このため、WSJT-Xを使わざるを得なくなり何とか取り込みを検討していましたが、spy++ではハンドル等が認識出来ませんでした。やむなく、WSJT-Xの画面データをCopyして(クリップボードを経由)このデータを100msec程度の間隔で見に行く手法で取り込んでいます。取り込めれば、後は工夫次第で結構いけるかも。私の場合は、Callと認識出来るデータを含む場合のみ取り込み他は無視するようにしています。他の部分でCallをコピーペストを使用しようと思うと横取りされる不便も有りますが。
JTDXの場合も全く同じ手法でいけますよ。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: QRコード
: 828
: 2017/11/04(Sat) 10:56:35
: JA2BQX 太田
JP7CZE 川辺さん,こんにちは。
QSL定義ファイルの中ではなかなか思う様には処理が出来ないので。
例えば , !cp で取り出した
RI0C/2 => RI0C_2 にする時に RI0C と 2 を取り出せたでしょうか? VB2010上ではなくてです。 置換命令はあったかな....? !
C1 は JARL枠1文字目は全角文字ですし、コールサインの桁数も直接は取れないですし。
#Jpg 命令で !cpLeft_!cpRight 等と出来れば良いですが。
いずれにしてもレコード番号の方が簡単です。
現在はレコード番号(川辺さんがhamlog相談室にて書かれていました)でjpgを作るようにして Hamlog.hdb からレコード範囲を決めて出力テストしています。
白紙横.QSL の最後に下記の命令を追加。
#Jpg x50,y700,240,240,"D:\Thw_QRCode\jpg\!NO.jpg"
予め同じ範囲を読みだしてQRコードのjpgを出力・保存して置く。
同一範囲をQSLカード印刷時にjpgを読み込み印刷。
左下にQRコードが印刷出来ました。 イメージを添付しました。
1枚QSLに複数データには対応していません。(だいぶ面倒そうなので)
Hamlog.hdb との照合処理は自作ソフトからコピーしてきたら
まだエラーが多いので修正に苦労中。
変数名等が統一されていないので新たに、処理を書いた方が早いかも?
タイトル
記事No
投稿日
投稿者
: Re: QRコード
: 827
: 2017/11/04(Sat) 10:16:10
: JP7CZE 川辺
JA2BQX 太田さん,
> QSLカードへのQRコード印刷の件、
> コールサインに / が含まれる時に / の左右の別々の項目定義名が無いので
>
> ファイル名 RI0C_17-07-25_1718U_14_CW.jpg として画像保存は無理ですね。
>
> RI0C/2 とかを表現出来ませんから。 ファイル名に / は使えないので。
> やはりレコード番号にしないといけないようです。
スラッシュの代わりにアンダースコアでも良いと思います.
RI0C_2_17-07-25_1718U_14_CW.jpg
いかがでしょうか.
受領側の処理でも,QRコードの中身に書いてあっても,
どうせならQSLカード全体をスキャンして,
その一部でQRコードをデコードし,
全体は RI0C _2_17-07-25_1718U_14_CW.jpg で保存すると,画像表示に使えるので.
フォルダをたとえば QR とQ SL とに分けたら同じファイル名でもOKか,
その場合はQSLカードスキャン側は6文字に満たないときにはスペースでパッディングします...
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: QRコード
: 826
: 2017/11/03(Fri) 18:16:13
: JA2BQX 太田
QSLカードへのQRコード印刷の件、
コールサインに / が含まれる時に / の左右の別々の項目定義名が無いので
ファイル名 RI0C_17-07-25_1718U_14_CW.jpg として画像保存は無理ですね。
RI0C/2 とかを表現出来ませんから。 ファイル名に / は使えないので。
やはりレコード番号にしないといけないようです。
JT65-HF-HB9HQX-Edition ver 5.1 のソースが公開されたので
明日からは Hamlog への自動転送コードを追加するプログラムをしますので
QRコード関係は数日お休みにします。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: THW_update 後の処理
: 825
: 2017/10/14(Sat) 09:35:54
: JA2BQX 太田
ありがとうございます。
> MakeIndex()を実行する必要は無いはずですよ。
> THW_update()の内部でそれに相当することをやってますので。
今、 10m FT8 で SA が開けているので後程ソースの修正をしておきます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: THW_update 後の処理
: 824
: 2017/10/14(Sat) 07:41:42
: JG1MOU浜田
> 27 = QSOデータをクローズ
> インデックスをクローズ
>
> THW_update() にて Code , Name , QTH を更新しています。
>
> MakeIndex("D:\Hamlog\Hamlog.hdb", "CODE+NAME+QTH", "D:\Hamlog\Hamlog.dx1")
> 28 = QSOデータをオープン
MakeIndex()を実行する必要は無いはずですよ。
THW_update()の内部でそれに相当することをやってますので。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: THW_update 後の処理
: 823
: 2017/10/11(Wed) 15:49:50
: JA2BQX 太田
こんばんは。
お騒がせしました。
比較用バッファにコピーなどでセットする順番が間違えているのがありました。
cmmd = 27 と cmmd = 28 も使い、インデックスの再構築のMSGも出ずに
更新した内容がメインウインドウに表示されました。
ありがとうございました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!