コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

DSからtwitterに投稿するには(6)

DSからtwitterに投稿する話の完結編です。その前に、SJISからUnicodeに変換する関連のソースとデモプログラムをNDS Program Roomにアップしました。昨日のブログに書いたソースを置いています。

DSからteitterに投稿する

この題材で書き始めて、UTF-8の日本語表示の方に話がそれて行って、結局、S-JISで行くことになり、S-JISコードをUTF-8に変換するという流れになりました。
「DSからtwitterに投稿するには」の(1)〜(5)についてもう一度簡単におさらいします。

  • twitterへの投稿時にBASIC認証が使える(今のところ)ので、BASE64変換プログラムを作成
  • twitterへの投稿にはhttpのPOSTを使うので、POSTのプログラムを作成
  • twitterへの投稿文字コードUTF-8を使うので、UTF-8変換するプログラム作成
  • twitterへの投稿時にUTF-8文字コードを16進数変換しなければならないのでプログラム作成
  • 上記プログラムを使って文字列をtwiterに投稿するプログラム作成

こんな感じのプログラムを作ってきました。これで、投稿はできるようになったのですが、投稿する内容を入力するところを用意していませんでした。そこで、簡易入力プログラムを作りました。あくまでも文字を入力するだけです。

DSから文字入力

下記のようなソフトキーボードを使って文字を入力します。このソフトキーボードは文字を打つだけです。かな漢字変換もありません。当然ローマ字かな変換もありません。私は25年近くかな入力なのでかながあればOKです。

ということで、入力のところのプログラムです。LeditKBD()でtext[]にラインエディットされた文字列が入ります。文字コードS-JISです。KanaChk()で濁点・半濁点の文字処理をします。そして、SJIS2UTF8()でS-JISコードがUTF-8に変換されます。これをtwitterPost()プログラムでtwitterに投稿します。

//**************************************************
// つぶやくだけ
//**************************************************
void  twitonly( void )
{
int ret;
char  text[256];
char  utf8[256];

  KeyboardIni( SubScreenA );  // キーボード表示準備をします
  ShinoPrintBox( SubScreenA, 4*6, 12*1, (u8*)ProgNameVer, 27, RGB(31,31,31),0,0);
  ShinoPrintBox( SubScreenA, 1*6, 12*3, (u8*)"[SELECT]ボタンでユーザ名とパスワードを再登録できます", 27, RGB(31,31,31),0,0);
  
  while( true ){
    text[0] = 0;
    //投稿内容編集
    while( true ){
      ret = LeditKBD( text, 140, 42, 0, 0, RGB(31,0,0), RGB(31,31,31), RGB(0,0,0) );
      if( ret!=0x05 ){  break;  }  //[X]ボタン以外はループを抜ける。[X]に機能を割り付けていないので
    }
    if( ret==0x1B || ret==0x03 ){  break;  }
    if( ret==0x04 ){
      //[select]でユーザ名とパスワードの入力
      SetUserNamePassWd();
      KeyboardIni( SubScreenA );  // キーボード表示準備をします
      ShinoPrintBox( SubScreenA, 4*6, 12*1, (u8*)ProgNameVer, 27, RGB(31,31,31),0,0);
      ShinoPrintBox( SubScreenA, 1*6, 12*3, (u8*)"[SELECT]ボタンでユーザ名とパスワードを再登録できます", 27, RGB(31,31,31),0,0);
      continue;
    }

    //濁点などの処理
    KanaChk( (unsigned char *)text );
    ShinoUpPrintBox( MainScreenA, (u8*)text, 42, RGB(31,31,31),RGB(0,0,0), 1, RGB(0,0,0) );

    //UTF-8に変換
    SJIS2UTF8( (unsigned char*)text, (unsigned char*)utf8, 256 );

    // twitter投稿
    ret = twitterPost( utf8, UserName, PassWd );
    if( ret!=true ){
      ShinoUpPrintBox( MainScreenA, (u8*)"twitterへの投稿に失敗しました。", 42, RGB(31,0,0),RGB(0,0,0), 1, RGB(0,0,0) );
    }
  }
}

本当につぶやくだけのプログラムです。ユーザ名とパスワードは別途登録してtwitonly.xmlファイルに保存されます。次回起動時は、このファイルからユーザ名とパスワードを読み出します。

TwitOnly Ver 0.1

上記のプログラムを体裁を整えて、「TwitOnly」というプログラムにしました。全然、実用的では無いですが公開します。エイプリールフールじゃないよ。NDS Program Roomで公開中です。

本当にやりたいことリスト

(ブログの終わりにやりたいことを書いておきたいと思います)

  • 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
  • Androidプログラム
  • Web系のプログラム