我在C ++中编写了Raspberry Pi上的交通信号灯并遇到了死胡同。
我使用的是从主代码块中调用的函数,问题是 - 在循环结束时转储所有预期的输出。两者都进入控制台和物理输出。
我已经找到了解决方案,但很快就找到了。
是否有人知道一种强制输出顺序发生的方法或一个阅读它的地方?
void idle()
{
int allY[]={9,22,13,26}; //output pin numbers
for(int i=0;i<=10;i++) // blink X times
{
for(int j=0;j<=4;j++) //all outputs to HIGH
{
digitalWrite (allY[j], HIGH);
cout<<"+"; // output to console for testing
}
usleep(900000); //wait
for (int k=0;k<=4;k++) // all outputs to LOW
{
digitalWrite (allY[k], LOW);
cout<<"-";
}
}
}
FOR FUTURE READERS - SOLUTION
void idle()
{
int allY[]={9,22,13,26};//output pin numbers
for(int i=0;i<=10;i++) // blink X times
{
for(int j=0;j<=4;j++)//all outputs to HIGH
{
digitalWrite (allY[j], HIGH);
cout<<flush; //flush
}
usleep(900000); //wait
for (int k=0;k<=4;k++)// all outputs to LOW
{
digitalWrite (allY[k], LOW);
cout<<flush;
}
usleep(900000); //wait
}
}