GWのガイガーカウンタ自作チャレンジ(2台目) ネクスト(13) web公開の暫定ソフト1
今夜、少々、もぞもぞと、このサイトのサンプルソースコードを参考に、自作ガイガーカウンタの計測とweb公開用の暫定ソフトを作成してみた。
こんな感じの構成。自作ソフトのソースコードは、まだ、要らない部位がの残っているけど、、、
こんな感じの構成。自作ソフトのソースコードは、まだ、要らない部位がの残っているけど、、、
// gm_cnt_01.cpp : #include "stdafx.h" #includeこんな感じ。自作ガイガーカウンタは、足下で稼働中、ナウ。#include #include "gm_cnt_01.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // WinApp theApp; using namespace std; WAVEFORMATEX wfe; WAVEHDR whdr; short *bWave; HWAVEOUT hWaveOut; HWAVEIN hWaveIn; int MyMain(int argc, TCHAR* argv[], TCHAR* envp[]); void MyWaveInProc ( HWAVEIN hwi, UINT uMSG, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 ) { // 未使用(^_^;A int ret; if ( uMSG == WIM_OPEN ) { fprintf( stderr, "WIM_OPEN(%d)\n", __LINE__ ); } if ( uMSG == WIM_DATA ) { ret = waveInStop( hWaveIn ); if ( ret != MMSYSERR_NOERROR ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return ; } ret = waveInClose( hWaveIn ); if ( ret != MMSYSERR_NOERROR ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return ; } fprintf( stderr, "WIM_DATA(%d)\n", __LINE__ ); } } int MyMain(int argc, TCHAR* argv[], TCHAR* envp[] ) { int ret = 0; int i; wfe.wFormatTag = WAVE_FORMAT_PCM; wfe.nChannels = 1; wfe.nSamplesPerSec = 32 * 1000 ; wfe.nAvgBytesPerSec = wfe.nSamplesPerSec * 2 ; wfe.wBitsPerSample = 16 ; wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample / 16; whdr.dwBufferLength = wfe.nAvgBytesPerSec * 60 ; // 60 sec bWave = (short *)malloc( whdr.dwBufferLength ); if ( bWave == NULL ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return -1 ; } whdr.lpData = (char *)bWave; whdr.dwLoops = 0; // 1; whdr.dwBytesRecorded = 0; whdr.dwFlags = 0; whdr.lpNext = NULL; whdr.dwUser = 0; whdr.reserved = 0; ret = waveInOpen( &hWaveIn, WAVE_MAPPER, &wfe, (unsigned long)MyWaveInProc, 0, CALLBACK_NULL ); // 本当はCALLBACK_FUNCTION使いたいが、クラッシュするんでやめてる if ( ret != MMSYSERR_NOERROR ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return -1; } ret = waveInPrepareHeader( hWaveIn, &whdr, sizeof(WAVEHDR) ); if ( ret != MMSYSERR_NOERROR ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return -1; } ret = waveInAddBuffer( hWaveIn, &whdr, sizeof(WAVEHDR) ); if ( ret != MMSYSERR_NOERROR ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return -1; } ret = waveInStart( hWaveIn ); if ( ret != MMSYSERR_NOERROR ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return -1; } Sleep( 70 * 1000 ); // wait for about 60 sec ret = waveInStop( hWaveIn ); if ( ret != MMSYSERR_NOERROR ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return -1; } ret = waveInClose( hWaveIn ); if ( ret != MMSYSERR_NOERROR ) { fprintf( stderr, "ERROR(%d)\n", __LINE__ ); return -1; } short max, min, cur, prv, thr; int cnt; max = min = 0; prv = cur = 0; thr = 20000; cnt = 0; SYSTEMTIME mytm; GetLocalTime( &mytm ); for (i=0; i = thr ) cnt++; } prv = cur; } fprintf( stdout, "%04d/%02d/%02d %02d:%02d:%02d, %d, psV/h, %d, %d, %d\n", mytm.wYear, mytm.wMonth, mytm.wDay, mytm.wHour, mytm.wMinute, mytm.wSecond, (cnt * 1000) / (3100) , cnt , max, min ); free( bWave ); return ret; }
トラックバック(0)
このブログ記事を参照しているブログ一覧: GWのガイガーカウンタ自作チャレンジ(2台目) ネクスト(13) web公開の暫定ソフト1
このブログ記事に対するトラックバックURL: http://the.nerd.jp/blogs/cgi-bin/mt-tb.cgi/4614
今日の0:00から動作テストしてみた。結果、こんな感じ。なお、psV/h値は、キャリブレーションしてないので、相対変化のみが有効に、ご注意。
2011/06/09 00:01:10, 51, psV/h, 159, 32767, 32767
2011/06/09 00:11:11, 45, psV/h, 142, 32767, 32767
2011/06/09 00:21:10, 47, psV/h, 147, 32767, 32767
2011/06/09 00:31:10, 49, psV/h, 153, 32767, 32767
2011/06/09 00:41:10, 49, psV/h, 154, 32767, 32767
2011/06/09 00:51:10, 47, psV/h, 146, 32767, 32767
2011/06/09 01:01:10, 47, psV/h, 147, 32767, 32767
2011/06/09 01:11:12, 46, psV/h, 143, 32767, 32767
2011/06/09 01:21:11, 44, psV/h, 138, 32767, 32767
2011/06/09 01:31:10, 47, psV/h, 146, 32767, 32767
2011/06/09 01:41:10, 44, psV/h, 138, 32767, 32767
2011/06/09 01:51:10, 44, psV/h, 138, 32767, 32767
2011/06/09 02:01:10, 43, psV/h, 135, 32767, 32767
2011/06/09 02:11:10, 43, psV/h, 135, 32767, 32767
2011/06/09 02:21:11, 43, psV/h, 134, 32767, 32767
2011/06/09 02:31:10, 46, psV/h, 144, 32767, 32767
2011/06/09 02:41:12, 42, psV/h, 131, 32767, 32767
2011/06/09 02:51:10, 46, psV/h, 144, 32767, 32767
2011/06/09 03:01:10, 47, psV/h, 146, 32767, 32767
2011/06/09 03:11:10, 44, psV/h, 138, 32767, 32767
2011/06/09 03:21:10, 43, psV/h, 135, 32767, 32767
2011/06/09 03:31:10, 45, psV/h, 141, 32767, 32767
2011/06/09 03:41:10, 42, psV/h, 131, 32767, 32767
2011/06/09 03:51:10, 45, psV/h, 141, 32767, 32767
2011/06/09 04:01:11, 44, psV/h, 139, 32767, 32767
2011/06/09 04:11:10, 45, psV/h, 142, 32767, 32767
2011/06/09 04:21:10, 44, psV/h, 137, 32767, 32767
2011/06/09 04:31:10, 45, psV/h, 140, 32767, 32767
2011/06/09 04:41:10, 45, psV/h, 142, 32767, 32767
2011/06/09 04:51:10, 43, psV/h, 134, 32767, 32767
2011/06/09 05:01:10, 44, psV/h, 138, 32767, 32767
2011/06/09 05:11:12, 45, psV/h, 141, 32767, 32767
こんな感じに出力される。