あさりのみそしるダイアリー

非常事態が日常です…そんな時こそ声を上げないと人生ジエンドにゃん(´・ω・`)

ひさびさのザウネタ1:赤外線通信でファイルをザウルスからパソコンに送る

いや、まぁ普通にできるジャン?

と思われるかもしれませんが、いや、そういう話ではなくて。


イメージ 1


ターミナル上からファイルを指定して、それを赤外線送信するプログラム「irsender」をちょいと組み立ててみました。
といっても、へっぽこですけどね。


・本体
http://asarinomisosoup.web.fc2.com/zaurus/prog/test/samp/ir-1/irsender

・ソース
http://asarinomisosoup.web.fc2.com/zaurus/prog/test/samp/ir-1/main.cpp



Qt本を図書館で見つけたので、それを参考にしつつ、ウェブ上のリファレンスマニュアルをみてリトライ。
というのも、昔々、ケータイでメールの本文を打つのがめんどくさかったので、ザウルスで作成したものをケータイに赤外線でとばそうと考えていた時期があったのですが、どうやってファイルを飛ばしたらいいのかわからなくてですねー。


「main.cpp」

#include <qapplication.h>
#include <qpe/ir.h>
#include <qpe/applnk.h>
#include <stdio.h>
#include <qfileinfo.h>
#include <qfile.h>

class IrSender : public QWidget{
    public:
        IrSender(const QString &file);
};

IrSender::IrSender(const QString &file){
    QFile f(file);
    if(!(f.exists())){
        printf("No such a file : %s\n", (const char *)file);
        exit(0);
    }
    QFileInfo *fi = new QFileInfo(f);
    printf("Send File : %s\n", (const char *)fi->absFilePath());
    Ir *ir = new Ir();
    const DocLnk doc(fi->absFilePath(), FALSE);
    ir -> send(doc, file);
    connect(ir,SIGNAL(done(Ir *)),qApp,SLOT(quit()));
}

int main(int argc, char **argv){
    if(argc != 2){
        printf("Usage : irsender filename\n");
        return(0);
    }
    QApplication a(argc, argv);
    IrSender is(argv[1]);
    a.setMainWidget(&is);
    return a.exec();
}



はい。

動作する保証はありません。
私のところでは一応動いていますが。
あと、バグなどがおこるかもしれません。使うとするならば自己責任で。

それと、なんだか知らないけど、通信終了後にソフトが終了してくれません。
なので、通信が終わったら「Fn」+「C」で中断してください。


赤外線送信時は、やったことがある方ならわかると思いますが、送信中画面が表示されます。
この画面の表示のために、QApplicationが必要なんだと。

それと、絶対パス指定じゃないと送信できないぽい。

ただ、このプログラムを実行するときは、相対パスで指定しても、中で絶対パスに置き換えているので、問題ないです。


・実行方法
./irsender 送信ファイル名

引数に送信したいファイルを指定します。前述の通り、相対パス指定でも絶対パス指定でも実行できます。
ただし、複数ファイルの送信はできません。やりたかったら自分でプログラムを改造してみてください。
存在しないファイルを指定した場合は「No such a file ,,,」と言って終了します。

実行ファイルは「irsender」です。インストール形式ではないので、好きなディレクトリにつっこんで使ってください。逆に言うと、アンインストールというか、不要になった時は「irsender」ファイルだけ消せばいいです。
パスの通った場所に置けば、「./」なしでも使えると思います。実行権限があればですが。


今後は、コイツを使って何かできればいいなと思っています。