핀 번호 13에서 병렬 포트의 입력 주파수를 계산해야합니다. 555 타이머 IC에서 실제 주파수는 약 3-4 Hz (ON 펄스) 여야합니다. 몇 가지 코드를 여러 번 시도했지만 각각 다른 값을 제공합니다. 나는 다음과 같은 코드를 시도 :카운트 병렬 포트 입력 주파수 - C#
[DllImport("inpout32.dll", EntryPoint = "Inp32")]
public static extern int Input(int adress);
private void button1_Click(object sender, EventArgs e)
{
int currentState = Input(889);
int LastState;
while (true)
{
int State = Input(889);
if (State != currentState)
{
if (Input(889) == 120)
{
LastState = 0;
}
else
{
LastState = 1;
}
break;
}
}
GetFreq(LastState);
}
void GetFreq(int LastPulse)
{
int highPulseFreq = 0;
int lowPulseFreq = 0;
if (LastPulse == 1)
{
highPulseFreq++;
}
if (LastPulse == 0)
{
lowPulseFreq++;
}
int startTime = DateTime.Now.Second;
while (true)
{
if (startTime == DateTime.Now.Second)
{
if (Input(889) != 120)// ON
{
if (LastPulse == 0)
{
highPulseFreq++;
LastPulse = 1;
}
}
else
{
if (LastPulse == 1)
{
lowPulseFreq++;
LastPulse = 0;
}
}
}
else
{
MessageBox.Show("ON Pulses: " + highPulseFreq.ToString() + Environment.NewLine + "OFF Pulses: " + lowPulseFreq.ToString());
break;
}
}
}
출력 :
내가 정확한 주파수를 얻으려면 어떻게해야합니까? 내 코드에서 잘못된 점이 있습니까? inpout32.dll
을 사용하여 병렬 포트를 제어하고 있습니다.
오프 펄스 값은 항상 120과 같거나 120보다 약간 크거나 작을 수 있습니까? –