GWのガイガーカウンタ自作チャレンジ(2台目) ネクスト(13) web公開の暫定ソフト1

| | コメント(1) | トラックバック(0)
今夜、少々、もぞもぞと、このサイトのサンプルソースコードを参考に、自作ガイガーカウンタの計測とweb公開用の暫定ソフトを作成してみた。

11060801.jpg 11060802.jpg

こんな感じの構成。自作ソフトのソースコードは、まだ、要らない部位がの残っているけど、、、
// 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;
}
こんな感じ。自作ガイガーカウンタは、足下で稼働中、ナウ。

11060803.jpg

トラックバック(0)

このブログ記事を参照しているブログ一覧: GWのガイガーカウンタ自作チャレンジ(2台目) ネクスト(13) web公開の暫定ソフト1

このブログ記事に対するトラックバックURL: http://the.nerd.jp/blogs/cgi-bin/mt-tb.cgi/4614

コメント(1)

今日の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

こんな感じに出力される。

コメントする

リンク用バナ画像

Thank you for visitors:

from 7th, May. 2005

2013年11月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

MY TWITTER

今月のイラスト/ムービー

応援サイト、その他




Visit RenderSan
<-- script type="text/javascript" src="http://swf.mikunavi.net/miku" width=150 height=44 --><-- /script --><-- br / -->
 

このブログ記事について

このページは、Digi Pontaが2011年6月 8日 23:30に書いたブログ記事です。

ひとつ前のブログ記事は「GWのガイガーカウンタ自作チャレンジ(2台目) ネクスト(12) 1台目の動作テスト」です。

次のブログ記事は「GWのガイガーカウンタ自作チャレンジ(2台目) ネクスト(14) web公開の暫定ソフト2」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01

マイサイト





Trackback People






注)「Calture」の正しい綴りは、「Culture」です。お間違いないように。