关于逻辑电路和串行通信的建议
据我了解,到目前为止,传输数据是通过引脚3完成的.如下所示: 有两件事使我对此感到不舒服.首先是,这似乎暗示着两个连接的设备在信号速度上达成共识,第二个是,即使它们配置为以相同的速度运行,您会遇到可能的同步问题……对吗?我想可以处理这样的事情,但是似乎必须有一个更简单的方法. 对我来说,似乎更好的方法是让一个串行端口引脚发送一个脉冲,表明下一个位准备存储.因此,如果我们将这些引脚连接到基本上有:(一些脉冲引脚) - > clk,tx-> d 这是常见的做法吗?有一些理由不这样做吗? 编辑 迈克不应该删除他的答案.此private void SendBytes(byte[] data) { int baudRate = 0; int byteToSend = 0; int bitToSend = 0; byte bitmask = 0; byte[] trigger = new byte[1]; trigger[0] = 0; SerialPort p; tr
14 2024-04-25
编程技术问答社区
C#中的并行端口访问。网
如何使用C#.NET通过并行端口发送和接收数据?你们还可以解释如何使用并行端口接收数据吗? 解决方案 i/o ports "> i/o ports ">未经审查的-1-控制LED(光发射二极管)带有平行端口
10 2024-04-24
编程技术问答社区
获取启动驱动器的序列号和其他信息
我正在尝试获取引导驱动器的序列号,但我还没有弄清楚如何做. 我确实知道分区= \ =硬盘驱动器,但我想要启动分区的序列. 到目前为止,这是我所拥有的: var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); int i = 0; foreach (ManagementObject wmi_HD in searcher.Get()) { // get the hardware serial no. if (wmi_HD["SerialNumber"] == null) richTextBox1.Text += "None" + Environment.NewLine; else
14 2024-04-19
编程技术问答社区
如何使用.Net核心识别Linux/Mac机器的硬件细节
如何使用.NET Core识别Linux/Mac机器的硬件详细信息. 对于Windows机器,我们可以使用System.Management和WMI查询. 因此,是否有任何类似的方法来识别Linux和Mac机器的硬件详细信息(例如RAM,Processor,Monitor,Cam等). 对于Windows,我正在使用: ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor"); 解决方案 这是一块编写Bash Linux的代码 using System; using System.Diagnostics; public static class ShellHelper { public static string Bash(this string cmd) {
32 2024-04-19
编程技术问答社区
我想做一个网站,能够控制客户电脑上的一个硬件。
在本地主机(用C#编码的网站)上运行测试,能够连接到通信端口并将命令传递到硬件,就像Hyperterminal Software一样 如果此网站已上传/托管,则该网站将无法使用,因为服务器没有将此套件连接到所需的通信端口. 一种方法是要求托管公司用硬件驱动程序等为我设置一台特殊计算机. 不可能. 定义硬件,硬件是遥控车. 那么解决方案是什么? 解决方案 您可以从浏览器应用程序中创建一个可以使用高度权利运行的Silverlight. 也许也可以使用ActiveX访问COM端口.但这将是唯一的Internet Explorer解决方案. 我找到了这个博客,有人设法使该博客工作. http:///tech-michael.blogspot. com/2009/12/silverlight-talking-to-arduino.html
16 2024-04-17
编程技术问答社区
大恩典还是小恩典?
假设我们暂时忽略了目标和源硬件.那么,哪个更好的结束风格是什么? ? 我只是想在这一方面达成共识/会议.到目前为止,我收到的最好的指导是"取决于",因此总是指定.没关系.我会去做. 但是,在这种情况下,没有必要有一种或另一种方式.没有遗产,所以我想:"当前和新兴硬件的最清洁选择是什么." 解决方案 实际上答案是取决于 如果您只想选择一个选择,那么在大端高级字节中首先出现,您可以随时检查第一个字节的正面或负数. 其他解决方案 不要选择.只需使用您的编译器/平台使用的任何内容即可.这没有麻烦,只是工作. 如果您正在做原始的网络工作,则可能需要转换为大型末日的网络dandianness/从网络entianness转换.但是,请不要因此而弄乱您的整个代码.只需在进入网络写作部分时进行转换即可. 其他解决方案 使用硬件中主要的主导.或使用"网络字节订单"(大元素),因为互联网确实如此.或随机选择一个.这很不重要.
8 2024-04-17
编程技术问答社区
硬件锁定的许可:我应该使用哪些硬件件?
我最近实施了一个具有模糊匹配的硬件锁定许可系统,以处理硬件的更改而无需重新激活,但是我需要更多的硬件来匹配以使其更安全/创建更可靠的模糊模糊匹配. 现在,我正在与以下内容相匹配: 物理Mac地址 硬驱动序列号 RAM零件号/制造商/大小 处理器ID 在这种情况下可以使用哪些其他机器特定的非变化硬件序列号,并且可以轻松从C#检索. 检索此类硬件信息的代码示例将不胜感激. 澄清 当我说"不变"时,我的意思是硬件串行或信息,而这些序列或信息不会直接修改机器中的硬件. (即,不会自行更改或通过软件更改) 解决方案 在一家从事这种硬件指纹识别的公司工作,我可以告诉您,商业替代方案通常相当稳定,但是在某些合法的情况下它们都会失败. 请注意,该空间中的某些专利非常积极地执行.一些大型成功的公司(例如微软)成功起诉了硬件锁定算法.如果您的工作非常成功,那可能会发生在您身上. 如果您觉得自己需要硬件锁定,请选择一家公司,该公司可以轻松地为那些对
16 2024-04-15
编程技术问答社区
以编程方式启用/禁用硬件设备
可能的重复: [.net]如何禁用系统设备? win32 api函数以程序上启用/禁用设备 有没有办法在C#中可以通过编程性禁用和重新启用设备?我正在寻找与设备管理器进入设备管理器并右键单击设备并禁用或启用它时发生的相同功能.我该如何在C#? 中执行此操作 解决方案 看看 net-how-how-do- i-disable-a-a-System-Device . 其他解决方案 根据此链接: http://bytes.com/topic/c-sharp/answers/513855-can-i-use-wmi-c-disable-enable-enable-enable-device 您需要与CFGMGR32接口 (win32 api)这样做. 我的第一个想法是看WMI,但不存在. DevCon,随附设备驱动工具包,提供了一个CLI来执行此操作. http://msdn.microsoft.com/en-us/library/ff541193
12 2024-04-15
编程技术问答社区
如何使用电脑扬声器发出提示音?
我想在C#中使用PC扬声器发出蜂鸣声.使用以下代码时: [DllImport("kernel32.dll", EntryPoint = "Beep", SetLastError = true, ExactSpelling = true)] public static extern bool Beep(uint frequency, uint duration); static void Main() { while (true) { Beep(1000, 500); Thread.Sleep(2000); } } 而不是通过PC扬声器发出哔哔声,而只是向默认的声音设备输出给定频率和持续时间的声音(例如,作为耳机).使用Console.Beep(). 时也会发生同样的事情 为什么? 注意: PC扬声器正在打开.当我启动PC时,它会发出哔哔声. OS是Windows8. 解决方案 您周围有32个
18 2024-04-15
编程技术问答社区
不能从DeviceInformation.Id创建UsbDevice
我正在尝试通过Windows.devices.usb使用通用Windows应用程序来连接到设备(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
10 2024-04-14
编程技术问答社区
在C#中,有什么最简单的方法可以在不写任何文件的情况下检查硬盘是否为SSD?
如果硬盘是SSD(固态驱动器),我需要检查C#,没有寻求罚款? 我用过: ManagementClass driveClass = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection drives = driveClass.GetInstances(); ,但它仅给出包含属性中SSD的字符串,我不能依赖于此? 我需要一种直接检查的方法? 解决方案 WMI将无法轻松确定这一点. There is a solution here that's based on the same algorithm Windows 7 uses to determine if a disk is SSD (more on the algorithm here: Windows 7固态驱动器的增强功能,第8页,也在这里: Windows 7 disk Defragmenter用户界面概述)
26 2024-04-12
编程技术问答社区
如何检测任何特定的驱动器是否是一个硬盘?
在C#中,您如何检测到特定的驱动器是硬盘驱动器,网络驱动器,CDROM或软盘? 解决方案 方法getDrives()返回一个driveInfo类,该类具有属性驱动器,该类型对应于system.io.io.io.drivetype: public enum DriveType { Unknown, // The type of drive is unknown. NoRootDirectory, // The drive does not have a root directory. Removable, // The drive is a removable storage device, // such as a floppy disk drive or a USB flash drive. Fixed, // The drive
14 2024-04-12
编程技术问答社区
多个键盘和低级别的钩子
我有一个系统,我有多个键盘,并且确实需要知道钥匙中风来自哪个键盘.解释设置: 我有一台普通PC和USB键盘 我有一个带有一些硬键的外部VGA屏幕 硬键被映射为标准USB键盘,发送有限数量的键编码(F1,F2,返回, +和 - ) 我有一个低级挂钩(在C#中,但实际上呼吁Win32功能),即使我的应用程序不专注,也能够处理输入. 问题是,使用普通键盘时,通过在外部屏幕上驱动的应用程序拾取的某些映射键编码.外部屏幕发送并用于确认的关键压力之一是VK_Return.除非我可以识别"设备"并在其上过滤,否则用户可以执行操作并在他们不在看的屏幕上确认它们. 我怎么知道哪个键盘负责键盘? 是的 这是我尝试弥补它的尝试:): 注册您要使用:: registerRawinputdevices()的原始输入(两个键盘)的设备. 您可以从getrawinputdevicelist() 获取这些设备 注册设备后,您将开始获取WM_Input消息. WM
16 2024-04-12
编程技术问答社区
如何在C#中快速获得Hardware-ID?
我需要在程序中将许可证与硬件ID联系起来.我尝试使用WMI,但它仍然很慢. 我需要,例如CPU,HDD和主板信息. 解决方案 有关更多详细信息,请参阅此链接 以下代码将为您提供CPU ID: 需要的名称空间System.Management var mbs = new ManagementObjectSearcher("Select ProcessorId From Win32_processor"); ManagementObjectCollection mbsList = mbs.Get(); string id = ""; foreach (ManagementObject mo in mbsList) { id = mo["ProcessorId"].ToString(); break; } 有关硬盘ID和主板ID详细信息,请参阅 this-link 为了加快此过程,请确保您不使用SELECT *,而只能选择您真正需要的东
12 2024-04-10
编程技术问答社区
C#是小恩典还是大恩典?
在硬件的文档中,允许我们通过UDP/IP控制它, 我找到了以下片段: 在此通信协议中,dword是一个4个字节数据,Word是一个2个字节数据, 字节是单个字节数据.存储格式是小末日,即4个字节(32bits)数据存储为:D7-D0,D15-D8,D23-D16,D31-D24;双字节(16个值)数据存储为:D7-D0,D15-D8. 我想知道这是如何转化为C#的? 在发送之前,我必须转换东西吗? 例如,如果我想发送32位整数或4个字符字符串? 解决方案 c#本身并未定义endianness.但是,每当您转换为字节时,您都会做出选择. bitconverter class class islittleendian 字段告诉您它的行为方式,但没有提供选择.二进制阅读器/二进制作者也是如此. 我的 miscutil 库具有一个EndianBitConverter类,允许您定义Endianness;二进制阅读器/作者也有类似的等效物.恐怕没有在线用法指南,但它们很琐碎
14 2024-04-10
编程技术问答社区
与RPi的RS-232通信
这是本文的后续问题: raspberrypi rs-232 Rass-232麻烦 我根据接受的答案对我的代码进行了更改,现在已设置终端用于阻止和规范输入. read()现在按预期工作,除了第一读(通常是一些随机符号与某些好数据混合)之外,我从激光范围查找器中获得单行数据,这代表了我期望看到的. 但是,我现在有一个问题,即如果我进行太多读数,激光范围的发现器将被放置在非操作状态,停止通信,并且只能通过执行功率周期来重置.这是在设备上只有4读的4次读取,而且我无法进行8次以上的读数.读取是否一次都没有关系,或者在几个程序开始跨越. int main(){ int uart0_filestream = -1; int loop, i, sentBytes; int isError, rx_length; unsigned char rx_buffer[256]; uart0_filestream = open("/dev/tty
10 2024-04-10
编程技术问答社区
如何用Python写到硬件的寄存器?
i具有C函数,可以通过打开设备描述符(NF10)来完美地读取/写入硬件寄存器.我正在尝试使用python做同样的事情.我能够阅读寄存器,但我无法写寄存器.为什么我无法写作?是否有更好的方法可以在硬件中读取/写入寄存器? 相关的Python代码: #! /usr/bin/env python import os from fcntl import * from struct import * SIOCDEVPRIVATE = 35312 NF10_IOCTL_CMD_READ_STAT = SIOCDEVPRIVATE + 0 NF10_IOCTL_CMD_WRITE_REG = SIOCDEVPRIVATE + 1 NF10_IOCTL_CMD_READ_REG = SIOCDEVPRIVATE + 2 def rdaxi(addr): f = open("/dev/nf10", "r+") arg = pack("q", int(addr, 16))
18 2024-04-09
编程技术问答社区
硬件断点EXCEPTION_SINGLE_STEP一直存在
我有一个充当调试器的程序.我将线程设置DR0设置为我想进入的地址的HW BP,并且DR7为1,因为我希望BP每次执行地址时都会生成事件. 它有效,但现在的问题是我不会一直停止接收exception_single_step.我正常使用Waitfordebugevent创建了一个循环: DebugActiveProcess(pid); while (flag == 0) { WaitForDebugEvent(&DBEvent, INFINITE); if (first_time){ setHWBPInCurrentThreads(pid, breakpoint_address); first_time = 0; } switch (DBEvent.dwDebugEventCode) { // Here we check
20 2024-04-09
编程技术问答社区
读取STM32 MCU的SPI数据寄存器的值
有很多类似的问题,但似乎没有一个相同的问题.我将STML4 MCU连接到6轴传感器(LSM6DS3).我已经成功地实现了I2C中的所有内容,但是希望SPI的额外速度(以及DMA,如果我能使这些第一步都可以正常工作...).因此,在第一步中,我试图读取设备的WHO_AM_I寄存器(0x0F),该寄存器应使用0x69回复.这是代码: uint8_t who = 0; // Sanity check/debugging aid should get 0x5D who = 0x43 + 0x1A; // Set SS low GPIO_WritePin (GPIOB, LL_GPIO_PIN_7, GPIO_PIN_RESET); // while tx buffer is in use, wait while (!LL_SPI_IsActiveFlag_TXE(SPI1)); // Send READ command to the WHO_AM_I register (SPI1-
34 2024-04-08
编程技术问答社区
写数据到寄存器
i具有某些寄存器的内存地址(地址LCDCW1为C000). C代码: #define LCDCW1 0xC000 *LCDCW1=0x31; 我只想将数据写入此寄存器.代码有问题,如何纠正它? thx! 解决方案 您可以正如其他人建议的那样声明适当的指针,即 volatile uint32_t *reg = (volatile uint32_t *)0xc000; 请注意,我已经添加了volatile预选赛.在阅读或编写硬件寄存器时,这始终是一个好主意,因为它可以确保您在C代码中执行的每个访问实际上都显示在生成的代码中. 但是,我通常更喜欢像这样写宏 #define READ_LCDCW1() ... #define WRITE_LCDCW1(value) ... ,然后用适当的GCC ASM填充.我更喜欢这些比直接使用指针,因为: 我认为他们在代码中阅读更好,确定我在做什么,阅读登记册,而不是关注我的工作方式. 某些寄存
14 2024-04-08
编程技术问答社区