Tag: 硬件

USB显微镜自动对焦算法

我正在尝试为低成本USB显微镜设计自动对焦系统。 我一直在开发硬件方面,使用精密PAP电机,可以调整显微镜中的聚焦旋钮,现在我处在困难的部分。 我一直在考虑如何实现该软件。 硬件有两个USB端口,一个用于显微镜摄像头,另一个用于电机。 我最初的想法是用C#编写一个能够从显微镜获取图像并向前和向后移动电机的应用程序,到目前为止一切都很好:) 现在我需要一些自动对焦的帮助,如何实现它? 这有什么好的算法吗? 或者也许是一个图像处理库,可以帮助我完成任务? 我一直在googleling但没有成功…我会感谢任何帮助/想法/推荐! 非常感谢 :) 编辑:谢谢你的答案,我会尝试所有选项,并回到这里与结果(或更多的问题)。

硬件锁定许可:我应该使用哪些硬件?

我最近实施了一个带模糊匹配的硬件锁定许可系统来处理硬件的变化而无需重新激活,但我需要更多的硬件来匹配以更安全/创建更可靠的模糊匹配。 现在我正在匹配以下内容: 物理mac地址 硬盘序列号 RAM部件号/制造商/尺寸 处理器ID 什么是其他特定于机器的不变硬件序列号,在这种情况下可以很好地使用,并且可以从C#轻松检索。 检索这些硬件信息的代码示例也将受到赞赏。 澄清 当我说“不变”时,我指的是硬件序列或信息,如果不直接修改机器中的硬件就不会改变。 (IE,不会自行更改,也不会通过软件更改)

以编程方式启用/禁用硬件设备

可能重复: [.NET]如何禁用系统设备? Win32 API函数以编程方式启用/禁用设备 在C#中,有没有办法以编程方式禁用和重新启用设备? 我正在寻找与您进入设备管理器并右键单击设备并禁用或启用它时基本相同的function。 我怎么能在C#中做到这一点?

在Windows 8中执行自动更改已连接的显示

精简版 如何自动更改多个显示设置? NVIDIA,3倍监视器(2倍DVI和1倍HDMI),GPU仅支持2个有源监视器。 长版 所以我有一台可以同时运行两个显示器的NVIDIA GeForce GTX 560 Ti 。 它有两个DVI连接和一个HDMI 。 我经常使用我的两台桌面显示器进行交换,只使用HDMI连接一台桌面显示器和电视。 我想使用批处理脚本或其他程序而不是使用Windows控制面板(控制面板\所有控制面板项目\显示\屏幕分辨率)或NVIDIA控制面板来自动更改和转发更改。 我找到了一些关于使用“ rundll32.exe , NvCpl.dll , dtcfg ….”等文档。这根本不起作用。 对于我在NVIDIA PDF文档中使用的任何参数,没有任何反应。 有没有人有一个有效的例子? 我也在Windows 7上试过这个。 我曾尝试使用WMI来查看监视器是否存在,但它只显示两个活动监视器。 它不显示第三个不活动的监视器。 我从User32.dll尝试过EnumDisplayDevices ,但这只返回两个活动的监视器。 我怎样才能使这个工作? 我想在C#中使用它,所以我可以使用它来改变音频设备:)

在没有在硬盘上写任何文件的情况下,C#检查硬盘是否是SSD的最简单方法是什么?

我需要检查C#,如果硬盘是SSD(固态硬盘),没有寻求惩罚? 我用了: ManagementClass driveClass = new ManagementClass(“Win32_DiskDrive”); ManagementObjectCollection drives = driveClass.GetInstances(); 但它只给出了属性中包含SSD的Strings,我不能依赖它? 我需要直接检查一下吗?

C#基于硬件ID创建唯一ID

我正在创建一个特定于机器的许可证。 许可证基于以下项目: MAC地址 CPU序列号 计算机卷序列号drive0 我假设如果3个中的2个匹配,那么我的许可证是有效的。 因此,可以获得新的网卡,许可证仍然有效,等等。 这是一个很好的方法还是我会遇到与此不匹配或经常更改的问题? 我正在尝试获取计算机的唯一标识符,以便我可以validation许可证。 请告诉我这看起来如何,或者你有更好的解决方案! 再次感谢! **这是我用什么来表达** 我最终只使用了VolumeSerial,CpuId和VideoControllerDescription。 public enum HardwareProfileComponents { ComputerModel, VolumeSerial, CpuId, MemoryCapacity, VideoControllerDescription } public static Dictionary HardwareProfile() { var retval = new Dictionary { {HardwareProfileComponents.ComputerModel.ToString(), GetComputerModel()}, {HardwareProfileComponents.VolumeSerial.ToString(), GetVolumeSerial()}, {HardwareProfileComponents.CpuId.ToString(), GetCpuId()}, {HardwareProfileComponents.MemoryCapacity.ToString(), GetMemoryAmount()}, {HardwareProfileComponents.VideoControllerDescription.ToString(), GetVideoControllerDescription()} }; return retval; } private static string GetVideoControllerDescription() { Console.WriteLine(“GetVideoControllerDescription”); var […]

无法从DeviceInformation.Id创建UsbDevice

我正在尝试使用仅适用于PC的通用Windows应用程序(无手机)(WinRT)通过Windows.Devices.Usb API连接到设备(SecuGen Hamster Pro 20)。 该设备是指纹扫描仪。 我已经完成了在线找到的所有步骤: 我找了所有使用的设备: var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(); 这将返回大约1400个设备。 经过一些过滤使用: var resultList = myDevices.Where(s => s.Name.ToLower().Contains(“secu”)).ToList(); resultList在我的机器中包含3个设备(我在其他机器上尝试了它,并在一些机器上找到了10个结果)。 我没有使用重载来查找设备DeviceInformation.FindAllAsync(String aqsFilter)因为它返回0结果,但我确定我做得对(使用了正确的VID和PID) 这里的问题是当我尝试使用以下三种结果中的任何一种创建UsbDevice对象时: UsbDevice device = await UsbDevice.FromIdAsync(resultList[0].Id); 返回值为null,我已经尝试了所有这些( resultList[0] , resultList[1] , resultList[2] )没有运气。 我使用以下方法配置function: 我还试图从DeviceInformation.FindAllAsync()返回的1400个设备中创建一个UsbDevice对象但是所有返回null甚至一些抛出一个exception,表示the system cannot find the file specified 0x80070002 我试图为它返回DeviceAccessStatus.Unspecified的设备读取DeviceAccessStatus.Unspecified 任何人都可以带我到我在这里失踪的地方?

如何检测任何特定驱动器是否是硬盘驱动器?

在C#中,您如何检测特定驱动器是硬盘驱动器,网络驱动器,CDRom还是软盘?

多个键盘和低级挂钩

我有一个系统,我有多个键盘,真的需要知道键击来自哪个键盘。 解释设置: 我有一个普通的PC和USB键盘 我有一个带有一些硬键的外部VGA屏幕 硬键映射为标准USB键盘,发送有限数量的键码(F1,F2,Return,+和 – ) 我有一个低级钩子(在C#中,但实际上调用了Win32function),即使我的应用程序没有聚焦,也可以处理输入。 问题是当使用普通键盘时,应用程序拾取的一些映射键码在外部屏幕上被驱动。 外部屏幕发送并用于确认的其中一个按键是VK_RETURN。 除非我能够识别“设备”并对其进行过滤,否则用户可能正在执行操作并在甚至不看的屏幕上确认它们。 我怎么知道哪个键盘负责按键?