================================================================================
MICROSOFT FOUNDATION CLASS Cu: eTest_SyncAiDevices vWFNg̊Tv
===============================================================================

Tv̊Tv

AD{[hgpA`l̓TvOsTvłB
̃Tv́ÃZTM𓯎Ɏ荞ތvȂǂŗpł܂B

Tv̎dl

EAD{[hԂŁATvOJn^C~OƃTvONbN̓Af[^Ws܂B
EAD{[hԂœ邽߂ɁAoXRlN^gp܂B
Eő4AD{[hgp\łB
EgpAD{[ĥA1݂̂}X^{[hAcX[u{[hƂĎgp܂B
EeAD{[h̑S`lgpāAf[^Ws܂B
EΏAD{[h
@AI-1204Z-PCIAAIO-163202F-PEAADA16-32/2(PCI)F
@قȂ^AD{[hgݍ킹Ďgp邱Ƃł܂B
Ef[^Wp[^
@ϊxF1msecAW񐔁F1000A`lFgpAD{[h̍ő`l

Tv̎gp@

01.R{{bNXAgpAD{[h̖I܂B
02.gpeAD{[h̃foCXݒ肵܂B
03.}X^ɐݒ肷AD{[hI܂B}X^{[h1݂̂łB
04.{^NbN܂B̌ʂ̓_CAÕeLXg{bNXɕ\܂B
05.WJn{^NbN܂B̌ʂ̓_CAÕeLXg{bNXɕ\܂B
06.f[^ۑ{^NbN܂Bf[^ۑ_CAO\̂ŁAۑ̃pXƃt@C͂܂B
07.ۑ{^NbNƁAWf[^CSV`Ńt@Cۑ܂B
08.CSVt@C͈ȉ̃tH[}bgō쐬܂B
	Device1:CH0:Sampling1, Device1:CH1:Sampling1, ..., Device2:CH0:Sampling1, Device2:CH1:Sampling1, ...<s>
	Device1:CH0:Sampling2, Device1:CH1:Sampling2, ..., Device2:CH0:Sampling2, Device2:CH1:Sampling2, ...<s>
	Device1:CH0:Sampling3, Device1:CH1:Sampling3, ..., Device2:CH0:Sampling3, Device2:CH1:Sampling3, ...<s>
09.I{^ƁAAvP[VI܂B

vO~O

EAD{[h̏Ǘ
	AD{[h̏Ǘɂ́AeTest_SyncAiDevicesDlg.hDEVICE_INFO\̂gpĂ܂B
	̍\̂ɂ́AAD{[hɊւȉ̏񂪊܂܂܂B
		foCX
		API-AIO(WDM)pID
		}X^foCXǂ
		ő`l
		TvO
		Wf[^z̃|C^
	CeTest_SyncAiDevicesDlgNXł́Am_Device_Info[4]Ƃčő4AD{[hp
	DEVICE_INFO\̌^z錾Ă܂B

EfoCXԓ̐ݒ
	oXɂ͔ėpIɎgpł3{̐ÃTvł1{ڂNbNM̓pA
	2{ڂWJngK̓pɎgpĂ܂B

	e{[hɂ̓CxgRg[jbg(ECU)ƌĂ΂AlXȐMRg[@\ڂĂA
	oXRlN^ɐMo͂A܂oXRlN^M͂ɂ́AECUgp܂B

	}X^{[h̃NbNMAoX̐M1ɏo͂ɂ́AECUM֐(AioSetEcuSignal)ŁA
	ڑ𓯊oX̃}X^M1(AIOECU_DEST_MASTER1)A
	ڑAiO͓NbNM(AIOECU_SRC_AI_CLK)ɐݒ肵܂B

	}X^{[h̎WJngKMAoX̐M2ɏo͂ɂ́ACxgRg[֐(AioSetEcuSignal)ŁA
	ڑ𓯊oX̃}X^M2(AIOECU_DEST_MASTER2)A
	ڑAiO͕ϊJnM(AIOECU_SRC_START)ɐݒ肵܂B

	oX̐M1X[u{[h̃NbNMƂē͂ɂ́ACxgRg[֐(AioSetEcuSignal)ŁA
	ڑAiO͓NbNM(AIOECU_DEST_AI_CLK)A
	ڑ𓯊oX̃X[uM1(AIOECU_SRC_SLAVE1)ɐݒ肵܂B

	oX̐M2X[u{[h̎WJngKMƂē͂ɂ́ACxgRg[֐(AioSetEcuSignal)ŁA
	ڑAiO͕ϊJnM(AIOECU_DEST_AI_START)A
	ڑ𓯊oX̃X[uM2(AIOECU_SRC_SLAVE2)ɐݒ肵܂B

EW̊Jn
	Ƀ}X^{[h̓JnĂ܂ƁA}X^ƃX[uԂł̓Ȃ߁A
	ɃX[u{[h̎WJnāAŃ}X^{[h̎WJn܂B
	}X^{[hWJn܂ł̊ԁAX[u{[h͊JngK҂̏ԂƂȂ܂B

	X[u{[h̎WJnɂAioStartAi֐gpA}X^{[h̎WJnɂAioStartAiSync֐gĂ܂B
	AioStartAi֐̓AvP[ṼXbhɑ΂Ĕ񓯊œ삷邽߁A
	̊֐͎WJnR}hn[hEFAɑMƁAɏ߂܂B
	AioStartAiSynćAAvP[ṼXbhɓē삷֐ŁAW܂ŏ߂܂B
	āA}X^{[hAioStartAiSync֐珈ԂꂽƂɂ́ASAD{[h̎WԂƂȂ܂B
	Tvł̓}X^{[hɑ΂AioStartAiSync֐sAɎWf[^̎擾sĂ܂B

EWf[^i[p̊Ǘ
	Wf[^i[p̃́AWJn{^̃NbNɕKvȗ̈mۂA
	I{^NbNƂɊJ܂B
	eAD{[hpɊmۂ̃|C^́ADEVICE_INFO\̂Bufferoێ܂B
	eAD{[hpɊmۂ郁̃TCÝAȉ̎ŌvZ܂B
		TCY(oCg) = float(4oCg)~ő`l~TvO

EG[̏
	API-AIO(WDM)֐R[̃G[́AErrorHandlerTu[`ɋLqĂ܂B
	̃Tu[`́AG[e̕\pɃfoCXA֐AG[R[hp[^ƂĎ󂯎܂B
	G[R[hAioGetErrorString֐ɂāAG[e𕶎ɕϊ邱Ƃł܂B

Ef[^̕ۑ
	Wf[^̃t@Cۑ́ASaveDataToCSVTu[`ɋLqĂA
	f[^ۑ{^NbNƂɌĂяoĂ܂B
	̃Tu[`́At@C̃tpXp[^ƂĎ󂯎܂B
	t@CCSV`ō쐬Aef[^̓J}܂B

	CSVt@C1sڂAD{[hƃ`lԍ悤ɁAwb_ł܂B
	2sڈȍ~ɎWf[^܂ĂA_3̓dƂċLqĂ܂B

JX^}CỸqg
Egp`lύXɂͥ

	gp`l̐ݒeTest_SyncAiDevicesDlg.cpp255sځAAioSetAiChannels֐ōsĂ܂B
	TvłAD{[h̍ő`l(m_Device_Info[i].MaxChannels)ݒ肳Ă܂A
	̃p[^ύX邱ƂŎgp`lύX邱Ƃł܂B

ETvO񐔂ύXɂͥ

	TvO񐔂̐ݒeTest_SyncAiDevicesDlg.cpp337sځAAioSetAiStopTimes֐ōsĂ܂B
	336ssampling_timesϐ񐔂ێĂA̒lύX邱ƂŃTvO񐔂ύX邱Ƃł܂B

ETvONbNύXɂͥ

	TvONbN̐ݒeTest_SyncAiDevicesDlg.cpp330sځAAioSetAiSamplingClock֐ōsĂ܂B
	Tvł1msecݒ肵ĂÃp[^ύX邱ƂŃTvONbNύX邱Ƃł܂B
	}`vNT^AD{[hgp̏ꍇAݒ肷TvONbNŏϊԁ~gp`lłKv܂B
	TvONbNZƁATvONbNG[āAAD{[h̎W͒~܂B
	AI-1204Z-PCÎ悤ȓTvO^AD{[h̏ꍇAݒ\ȃTvONbN͎gp`lɈˑ܂B

EWf[^dł͂ȂAoCi`Ŏ擾ɂͥ

	f[^WeTest_SyncAiDevicesDlg.cpp417sځAAioGetAiSamplingDataEx֐ōsĂ܂B
	̊֐͓d̒PʂŎWf[^擾܂AAioGetAiSamplingData֐gp邱ƂŁA
	oCiPʂŃf[^擾邱Ƃł܂B
	܂Af[^i[zfloat^long^ɕύXKv܂B
	ϊf[^i[p̃obt@eTest_SyncAiDevicesDlg.h54sڂ́ADEVICE_INFO\̂̃oƂĒ`Ă܂B
	BufferϐAfloat^long^ɕύX܂B
	obt@pmۂĂ镔ɂύXKvłBeTest_SyncAiDevicesDlg.cpp417sڂłnewZqgp
	float^z̃mۂsĂ܂Along^ɕύX܂B
	t@CۑsTu[`SaveDataToCSVɂύXKvłB
	eTest_SyncAiDevicesDlg.cpp525sڂɂāAf[^݃tH[}bg"%5.3f""%d"ɕύX܂B

E}X^{[h̃NbNMONbNɂɂͥ

	NbNM̐ݒeTest_SyncAiDevicesDlg.cpp270sځAAioSetAiClockType֐ōsĂ܂B
	Tvł͓NbNgpĂ܂Ap[^1ݒ肷邱ƂɂAONbNgp܂B
	X[u{[h̐ݒ͕Kv܂B

E}X^{[h̎WJngKOgKɂɂͥ

	WJn̐ݒeTest_SyncAiDevicesDlg.cpp282sځAAioSetAiStartTrigger֐ōsĂ܂B
	Tvł̓\tgEFAX^[ggpĂ܂Ap[^1܂2ݒ肷邱ƂɂA
	OgK̗オGbW܂͗GbWgp܂B
	X[u{[h̐ݒ͕Kv܂B

