設定でハマったので備忘録を兼ねてメモ。
PC & Softwareの最近のブログ記事
highlight.jsでコードハイライトを試してみました。
java
public class MainActivity extends FragmentActivity {
static final String TAG = "MainActivity";
/**
* The {@link android.support.v4.view.PagerAdapter} that will provide
* fragments for each of the sections. We use a {@link FragmentPagerAdapter}
* derivative, which will keep every loaded fragment in memory. If this
* becomes too memory intensive, it may be best to switch to a
* {@link android.support.v4.app.FragmentStatePagerAdapter}.
*/
/**
* The {@link ViewPager} that will host the section contents.
*/
// ViewPager mViewPager;
GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
MapsInitializer.initialize(this);
moveToSapporoStation();
}
}
C++
/*
* main.cpp
*
* Created on: 2012/06/12
* Author: yasuoki
*/
#include "sentinel.h"
#include "sst_memory.h"
#include "pjson.h"
#include
#include
#include
#include
#include
#include
using namespace SST;
int main(int argc, char *argv[])
{
char confFile[1024];
strcpy(confFile, SST_CONFFOLDER "/" SST_CONFFILE);
openlog(SST_SYSLOGIDENT, LOG_PID, LOG_USER);
Sentinel *obj = new Sentinel();
argc--; argv++;
while(argc) {
char *p = *argv;
if( *p == '-' ) {
if( strcmp( p+1, "f") == 0 ) {
argc--; argv++;
if( !argc ) {
obj->log(LOG_ERR, "param error (-f)");
exit(EXIT_FAILURE);
}
strcpy(confFile, *argv );
argc--; argv++;
} else if( strcmp(p+1, "v") == 0 ) {
#ifdef _DEBUG
printf("sentinel %s (DEBUG build)\n", SST_VERSION);
#else
printf("sentinel %s\n", SST_VERSION);
#endif
return 0;
}
continue;
}
fprintf(stderr, "param error (%s)", p);
exit(EXIT_FAILURE);
}
obj->log(LOG_NOTICE, "sentinel %s", SST_VERSION);
if( !obj->loadConfig(confFile) ) {
exit(EXIT_FAILURE);
closelog();
}
Conf *conf = obj->getConf();
int f = LOG_USER;
if( conf->daemonaize )
f = LOG_DAEMON;
if( (conf->logIdent && strcmp(conf->logIdent, SST_SYSLOGIDENT) != 0) || conf->daemonaize || conf->logFacility != f ) {
closelog();
int f = LOG_USER;
if( conf->daemonaize )
f = LOG_DAEMON;
if( conf->logFacility != 0)
f = conf->logFacility;
openlog(conf->logIdent, LOG_PID, f);
obj->log(LOG_NOTICE, "sentinel %s", SST_VERSION);
}
if( conf->daemonaize ) {
pid_t pid, sid;
pid = fork();
if (pid < 0) {
obj->log(LOG_ERR, "fork");
exit(EXIT_FAILURE);
}
if (pid > 0)
exit(EXIT_SUCCESS);
sid = setsid();
if (sid < 0) {
obj->log(LOG_ERR, "setsid");
exit(EXIT_FAILURE);
}
if (chdir("/") < 0) {
obj->log(LOG_ERR, "chdir");
exit(EXIT_FAILURE);
}
umask(0);
{
FILE *fp = fopen(conf->pidFile, "w");
if( fp == NULL ) {
fprintf(stderr, "create pid file error.\n");
obj->log(LOG_ERR, "create pid file error.");
exit(EXIT_FAILURE);
}
fprintf(fp,"%d", getpid());
fclose(fp);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
}
if( !obj->run() ) {
obj->log(LOG_ERR, "sentinel aborted");
if( conf->daemonaize ) {
unlink(conf->pidFile);
}
exit(EXIT_FAILURE);
}
if( conf->daemonaize ) {
unlink(conf->pidFile);
}
delete obj;
closelog();
#ifdef SST_DEBUG
sst_dump();
#endif
exit(EXIT_SUCCESS);
}
MTで使うには簡単で良いですね。
車載PC Playerの制作も途中ですが、こんどはクルマのメーターパネルを作ってみることにしました。
きっかけは、ELM327 Bluetoothアダプタを買ってみたことで、これを使って遊んでみようという単純なお話です。
クルマ系の話題なのでみんカラの方に少し前から書いていましたが、だんだん工作面が強くなってきたのでこちらで書くことにしました。
これをクルマのOBD2ポートに接続すると、Bluetooth経由で主要なデータを取得することができます。
例えば、エンジン回転数、冷却水温度、走行速度、などなど。
オリジナルアプリでELM327から受信したデータを表示します。
現在の進捗は、Androidアプリの作成がほぼ完成して、周辺機器と格闘しているところです。
電源を見直してみました。変更点は2点。
- PC用電源は容量に不安があったので、3Aまでのレギュレータに変更してリレーでON/OFFとする
- キーのON/OFFを確実に検出するため、ACCラインでリレーを動かしてPICのポートにつなぐ
散々迷って、結局省電力とコンパクトな点が決めてとなりOLEDディスプレイを使ってみる事にしました。
RS-ONLINEで発注しましたが、英国取り寄せとなり納品まで2週間ほどかかるようです。
OLEDディスプレイということでPCとの表示データの転送速度が懸念となりますが、RS-232Cでどこまでできるのか試してみる事にしました。