实际上,我想在我的Linux设备中将LED指示灯闪烁三次。
我可以通过将1和0简单地测试为echo "1" > /dev/ipuc/ledd
我希望这是在C程序中,它最终会像这样,我想避免这么多写。下面的代码是外行实现,write会有返回代码以获得更好的虚假证明。
代码
static char *ledd = "/dev/ipuc/ledd";
int fd = -1;
if( (fd = open(ledd, O_RDWR ) ) == -1 )
{
perror( ledd );
}
write(fd, "1", 1);
write(fd, "0", 1);
write(fd, "1", 1);
write(fd, "0", 1);
write(fd, "1", 1);
write(fd, "0", 1);
答案 0 :(得分:6)
结合答案和评论:
char sequence[] = "1101001"; // Whatever sequence here
char *s = sequence;
while (*s)
{
write(fd, *s++, 1);
usleep(300000); // Or some other delay facility
}
如果您只是想COUNT / 2
次闪烁:
unsigned int i;
for (i = 0; i < COUNT; i++)
{
write(fd, '0' + (i % 2), 1);
usleep(300000); // Or some other delay facility
}
或者如果你想永远闪烁它:
unsigned int i = 0;
while(1)
{
i ^= 1; // Toggle LSB
write(fd, '0' + i, 1);
usleep(300000); // Or some other delay facility
}
答案 1 :(得分:2)
为什么不一次写下所有数据?
char towrite[] = "101010";
write(fd,towrite,sizeof(towrite)); // or strlen if char pointer
一次写入,写入6个字节。
但是,时间可能与6次调用write
的代码不同。如果您必须在写入之间等待,那么您显然无法立即写入所有数据(与Print a string char by char with a delay after each char相同的问题)