Tag: 设备

C – 在设备文件中从cat无限读取

我一直有一些头痛无法从cat读取(cat没有关闭,因为它没有从我的读取函数接收函数结束。我怎样才能实现读取结束,以便用cat读取文件只会产生终端每个命令输出1个? function。 这是我写的内核read()函数: static ssize_t dev_read(struct file *file, char *buf, size_t count, loff_t *ppos) { char tmp_buf[MAX_BUF_SIZE]; //defined as 100 int bLen=0; sprintf(tmp_buf, “Some message”); bLen = strlen(tmp_buf); if(copy_to_user(buf,tmp_buf, bLen)){ return -EFAULT; } return bLen; }

如何在c 中执行多个读/写HDD / USB字节

首先,我看了几个链接…… 直接有效地读写硬盘扇区 在Windows上使用C语言读取硬盘驱动器上的特定扇区 我正在尝试做几乎相同的事情。 我遇到的问题是多次读取设备,因此我可以从DEVICE(USB)存储读取的字节,将它们写入文件。 这就是我想要做的…… 声明变量 初始化变量 SetFilePointer() ReadFile的() 将读取的字节输出到文件 使用ReadFile()来获取更多字节 再次将读取的字节输出到同一文件 重复6和7(实际上只重复4和5) 这似乎不起作用。 我想读取x个字节并将这些值存储到一个文件中然后读取更多并将这些值存储在上次相同的文件中。 我希望它重复这个过程,直到它读到设备的末尾。 我希望这个程序适用于任何大小的设备。 如果我可以把它放在循环中,那么我可以读写无限大小的设备。 这是一个如何读/写,所以我也想反过来。 读取文件中的值,然后将其写入设备。 我使用的是128MB USB。 它包含131858432字节。 如果需要更多信息,我会发布它,如果我有它。 我的代码: #include #include int main(int argc, char ** argv) { BYTE sector[0x400] = {0}; DWORD bytesRead; HANDLE device = NULL; int numSector = 1; int maxRead = 1; FILE *readChar […]

虚拟并行端口仿真器

在我的计算机网络课程中,我们应该通过使用本机寄存器来学习并行端口编程(比如使用outportb之类的命令)。 我没有并行端口(因为我住在2011年)但想要练习程序(我使用dosbox安装了旧的turboc 3 IDE)。 是否有一个模拟并行端口的程序, 如此程序模拟串口?

select()没有响应写入/ dev / input / mice

我正在编写一个程序,通过键盘和鼠标设备文件上的select()进行监视。 它等待这些文件上的任何写操作(这应该在键击或鼠标移动时发生),并且只要有写操作,就会执行一些作业。 但它不起作用。 我的代码如下。 #include #include #include #include #include #include #include #include #include void main() { int mouse_fd,kbd_fd,fd_max; struct input_event ev; fd_set rfs,wfs; if((mouse_fd=open(“/dev/input/event3”,O_WRONLY))==-1) { printf(“opening mouse device file has failed \n”); } else { printf(“opening mouse device file has been successfull \n”); } if((kbd_fd=open(“/dev/input/event2”,O_WRONLY))==-1) { printf(“opening keyboard device file has failed \n”); } else […]

Win32确定何时连接/断开键盘

我正在尝试确定键盘何时连接或断开连接。 我尝试了以下策略: RegisterDeviceNotification 如何在DirectInput中确定键盘断开连接时,建议使用如MSDN上所述的RegisterDeviceNotifaction。 当我尝试这个时,我在窗口回调中得到了DB_DEVNODES_CHANGED事件,它没有提供其他信息(只是一些未知设备已经改变了连接状态)。 我为注册尝试了各种GUID: 4D36E96B-E325-11CE-BFC1-08002BE10318 (几个网站说这是键盘的类guid)和从IDirectInput8::EnumDevices(DI8DEVCLASS_KEYBOARD, …, DIEDFL_ATTACHEDONLY)检索的IDirectInput8::EnumDevices(DI8DEVCLASS_KEYBOARD, …, DIEDFL_ATTACHEDONLY) 。 但我仍然只得到DB_DEVNODES_CHANGED事件。 IDirectInput8 :: EnumDevices 每次调用IDirectInput8::EnumDevices(DI8DEVCLASS_KEYBOARD, …, DIEDFL_ATTACHEDONLY)都应该只枚举附加的设备。 但是,当我断开键盘的连接时, EnumDevices仍会枚举EnumDevices 。 当我对我的游戏控制器(类型为DI8DEVCLASS_GAMECTRL )执行相同操作时,控制器仅在连接时枚举,允许我确定其连接状态。 其他function 我试过了: IDirectInput8::GetDeviceStatus IDirectInputDevice8::GetCapabilities IDirectInputDevice8::GetDeviceInfo IDirectInputDevice8::GetDeviceState IDirectInputDevice8::Poll 所有function都成功,并且无法确定键盘是否已连接。 我也看过MSDN的键盘部分 ,但无济于事。 问题 成功完成此任务的任何人都可以证实我采取了正确的方法吗? 我还有其他function或API吗? 任何提供示例的网站(我用google搜索失败了)? 为什么EnumDevices适用于我的控制器而不是我的键盘? 我如何让它适用于我的键盘?

如何在Mac OS上获取video捕获设备(网络摄像头)列表? (C ++)

所以我需要的只是简单 – 当前可用的video捕获设备(网络摄像头)列表。 我需要在简单或C ++控制台应用程序中。 按列表我的意思是像这样的控制台输出: 1) Asus Web Camera 2) Sony Web Camera 所以看起来很简单,但我有一个要求 – 尽可能使用原生OS apis – 毕竟没有外部库 – 我们想要的就是打印出一个列表 – 不要飞到月球上!)(并没有使用Objective-C,please – pure C / C ++) 怎么办这样的事? 也来自这个系列: 如何在linux上获取video捕获设备列表? 以及使用正确,经过测试的答案获取摄像机名称的特殊细节 如何在Mac OS上获取video捕获设备列表? 正确的,尚未通过我的答案测试 如何在Windows上获取video捕获设备列表? 正确,经过测试的答案 如何使用Qt(跨平台)获取列表video捕获设备NAMES?