9 April, 2001
MOREって連携させると、統合ソフトみたいにどんどん便利になりますよね。
ここではmabMOREの呼び出し方法を説明します。
本当はライブラリ化したほうがいいんですが、手抜きして、簡単な方法を紹介しておきます。
好きに呼び出してください。
ただし必ずテストは自己責任で行ってください。なお、バグとかの対応もあるため、一応「連携したよ」というメールは下さいね。
月の予定表(MPAM)と予定Editor(WYR3)の連携のしくみ(MOREプログラミング情報)
縦型も、横型も同じ起動ファイルを使います。
月の予定表から予定Editorを起動するときに、ザウルス本体側に WYR3KICK.INI というパソコンデータを作成します。Editorはこのファイルが存在すれば、指定日のデータで起動します。Editor起動後、削除します。
予定Editorから月の予定表を起動するときに、ザウルス本体側に MPAMKICK.INI というパソコンデータを作成します。月の予定表はこのファイルが存在すれば、指定日のデータで起動します。月の予定表が起動後、削除します。
このファイルは中身は同じです。以下の構造体で定義しているので、MORE開発者はこれらの情報をセットすれば、好きな日付でEditorや月の予定表を呼び出すことができます。未使用エリアはヌルクリアしてください。
typedef struct WYR3KICK {
TIME Settime; /* 起動日付・時刻(必須入力) */
UCHAR CardReading; /* 0:本体Read 1:Card Read(必須入力) */
UCHAR WriteMode; /* 0:新規 1:修正 3:新規(開始・終了時刻付き)(必須入力)
*/
int DestApl; /* 起動アプリ 1:通常 2:期間 3:Todo (必須入力)*/
USHORT IndexNo; /* 書込みIndexNo(未使用) */
USHORT CardNo; /* 書込みCardNo(0:新規書込み、それ以外:実際のカードID)(必須入力)
*/
TIME Endtime; /* 終了時刻 (WriteModeが3のとき利用)*/
char gamenID; /* 起動画面 0:デフォルト, 1:monthly, 2:Week, 3:dayly
4:todo付dayly */
char aplName[5]; /* "WYR3"など起動元Apl名 null終了*/
char buffer[9]; /* Work */
}WYR3KICK;
なかばんさんが連携ライブラリ(mab方式)にまとめてくれました。これを使うと簡単です。
<方法>
以下の「起動ファイル」を、呼び出したいMOREがあることを確認してから作成し、対象MOREを起動します。呼び出し先では、(編集中の内容があればレジューム内容の方が優先され、ファイル名は無視されることもあります)起動後に起動ファイルを確実に削除します。
今のところ、mabEditorではバイナリだろうがノーチェックでファイルを開こうとするので、Editorで編集されては困るファイルは開かないように、呼び出し側で注意してください。
呼び出されたら、ファイル
<mab製対応済みアプリ> 2001/1/19現在
mabEditor、 mabEditorV、CSVどうだ〜、つぎはぎマン、JpegCutter&Movie
<mab製対応予定アプリ> 2001/1/19現在
どこでもHTML/HtmlV, まいMovie2,
連携ライブラリを使わない場合のコーディングサンプル
#define KICK_FILE "F0:WYR_KICK.INI"
typedef struct KICK_F{//赤文字はEditor系で必須
char destAplName[5]; /* 呼び出し先[4]0x00
*/
char srcAplName[5]; /* 呼び出し元[4]0x00
*/
TIME setTime; /* [4]0x00 */
char FileName[LONG_DFNAME_LEN+20]; /* フルパス
*/
char dirname[LONG_DFNAME_LEN]; //F0:, F1:,
F1:\dir\ など
int ReadOnlyMode; /* mabEditor以外は無視
0:no, 1: yes */
char work[100]; /* アプリケーションごとに好きな構造体で切って使えます。初期値はヌルクリアしてください
*/
}KICK_F;
//KICKファイル作成 sample
KICK_F kickFile;
int leng, i;
FILE *fp;
memset((char *)&kickFile, 0x00, sizeof(kickFile)); /* null */
//file Open&書き込む
fp=fopen(KICK_FILE, "w") ;
strcpy(kickFile.destAplName, "WYR8"); //mabEditor
strcpy(kickFile.srcAplName, "WYR4"); //どこでもHTML
strcpy(kickFile.FileName, "F1:\TEST.DOC");
for (i=(strlen(kickFile.FileName)-1), leng=0;i>=0;i--){
if (kickFile.FileName[i]==':' || kickFile.FileName[i]=='\\') break;
else leng++;
}
/* dir get */
leng=strlen(kickFile.FileName)-leng;
strncpy(kickFile.dirname, kickFile.FileName, leng);
kickFile.ReadOnlyMode=0; /* 0,1 */
fwrite((char *)&kickFile, sizeof(kickFile), 1, fp);
fclose(fp);
起動ファイル作成は 上記2.と同じ方法で行います。
指定されたファイルDirectoryのファイルをPreviewして起動します。
現在のver4.2では ReadOnlyMode を判別していませんが、今後のバージョンアップで起動画面、戻り画面が変更できるようにする予定です。
<予定>
ReadOnlyMode:0 リスト画面で全体Preview起動
ReadOnlyMode:1 全画面(画面Fit縮小)で起動し、戻るキーで呼び出し元アプリに戻る。つまり、ただのJpegビューアー的な呼び出しができます。
一時・二時・三時作成ファイルというのは、ザウルスのOffScreenイメージをそのままベタファイルに書いているものです。ザウルススナップショットで撮れるZSSファイルにもよく似ています。
BMPの容量の約2/3になっているので、画質を落とさずに保存しておくにはいいかも。(とはいえ、QVGAで250k,VGAで600Kもあります。)
YagshiさんがPerlで作ったZSS->BMPのコンバータツールを見つけたので、。多少いじったらきちんとBMPに戻りましたが、勝手に変更したものを転載すると問題ありそうなので、もし必要ならば連絡ください。
そのうちMOREでコンバータ出します。だれも作らなかったら。。。
#define JPG_TEMP_CARD "F1:WYR9TMP0.JP_" /* 一時保管編集ファイル
*/
#define JPG_TEMP2_CARD "F1:WYR9TMP2.JP_" /* 一時保管編集ファイル
*/
#define JPG_TEMP3_CARD "F1:WYR9TMP3.JP_" /* 一時保管編集ファイル
*/
<ファイル構造>
typedef struct OFFIMAGE_HEAD {
char aplName[5]; /* WYR9など作成アプリ */
USHORT komaNum; /* 1, 4, 16, 64 */
OFFSCRNINFO offInfo; /* この後PIXMAPが続く */
}OFFIMAGE_HEAD;
OFFIMAGE_HEADのサイズは19バイト、それ以降はoffInfo.size分のPixMapが続きます。
offInfo.size=head.offInfo.rect.width * head.offInfo.rect.height *2 になります。
なかばんさんの方式で「カード情報ファイル(F1:\DIRLIST.INI)」を使って、今後は各MOREで共通のアクセス方式にします。
別MOREで入力したデータをにゃんこ先生でグラフ化するための呼び出し方法です。大和さんのPIMPlusから連携要望がありましたので、仕様を公開していきたいと思います。
1.にゃんこ先生では、今のところ、F0ドライブで、WYRA001.TXT〜WYRA010.TXTまでの10個まで、しか読み出すことはできません。毎日、毎月単位で入力すると便利なデータは、このファイル名で、存在しないものを使って下さい。ファイル名を固定化するのはおやめください。すでに10個分使っている場合は、データを新規作成することはできません。
2.データファイル(WYRA00n.TXT)は、改行コードがCRだけの、CSVファイルです。一行が1月分、31日分のレコードになっています。各データはfloatで、小数点2桁まで登録しています。最終レコードも必ず改行で終わります。
3.データファイルを新規作成するときは、1行目はタイトル行にし、1カラム目にカテゴリと単位を入れてください。カテゴリは全角7文字以内、単位は半角5文字以内で考えてください。
4.データファイルへのアクセス関数(CSVファイルへのデータ書き出し、読み出し)はmabが提供することができます。その場合は、上述2、3、は考慮する必要はありません。独自の書き込みを行う場合は、必ず厳重なテストを行い、にゃんこ先生で作成したファイルを間違った削除、修正をしないように注意して下さい。
5.呼び出しMOREで、データファイルを作成もしくは上書きした後、にゃんこ先生を呼び出します。初めて呼び出した場合は、にゃんこ先生のカテゴリ設定で、カテゴリを登録する旨指示してください。にゃんこ先生のレジュームファイルを直接操作することは禁止します。
6.にゃんこ先生の呼び出し方法は、当面は、KICKファイル(上述)を使わずに、アプリ名指定で呼び出してください。にゃんこ先生の次以降のバージョンで、「KICKファイルを使ったmabMORE起動」に変更してください。そうすると、にゃんこ先生は、呼び出された後、指定したデータファイルを開き、戻る操作で、呼び出しMOREに戻ることができるようになります。その場合、KICKファイル名起動しませんので、ご注意下さい。