我有一个温度传感器,该温度传感器使用USB-I2C适配器(http://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm)连接,并将该设备连接到linux计算机(suse10)。我输入dmesg并看到
usb 3-3: new full speed USB device using ohci_hcd and address 10
usb 3-3: new device found, idVendor=0403, idProduct=6001
usb 3-3: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-3: Product: FT232R USB UART
usb 3-3: Manufacturer: FTDI
usb 3-3: SerialNumber: A7007K93
usb 3-3: configuration #1 chosen from 1 choice
ftdi_sio 3-3:1.0: FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected FT232BM
usb 3-3: FTDI USB Serial Device converter now attached to ttyUSB0
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何读取当前温度。
更新1:实际上,I2C总线最多可以连接127个传感器。但是我不知道如何列出可用传感器的地址。
有人可以给我一些提示吗?提前致谢
我希望通过TI MSP430或类似设备从我的计算机控制一堆LED.
我的电脑是Macbook Air,所以看起来我唯一能与之通信的端口是USB.MSP430有一个USB端口,但除了编程芯片之外,我找不到任何有关使用USB端口的信息.有没有办法解决这个问题,使用USB与电路板通信?
谢谢!
我从eBay那里买了一台便宜的RFID阅读器,只是为了玩.没有API,它只是写入stdin- 它说,如果你打开记事本并点击RFID标签到阅读器,其ID号出现在记事本窗口中.
我正在寻找具有实际API(任何建议?)的价格合理的读写器.
在那之前,我需要使用我拥有的东西来快速演示,只是为了证明这个概念.
如何最好地拦截USB连接的输入?(并且有免费的VCL控制来执行此操作吗?)
我想如果我只有一个带有控件的模态形式,那么我可以挂钩它的更改事件.但模态形式似乎有点粗鲁.也许我可以挂钩键盘输入,因为它似乎注入像类型字符?
任何的想法?请告诉我,如果我没有足够清楚地解释这一点.
在此先感谢您的帮助.
最后,我只是挂了键盘,而不是试图拦截USB.如果我检查我的应用程序是否处于活动状态并以其他方式传递击键,则它可以工作.我的应用程序没有任何键盘输入,只有鼠标点击(我从RFID读取的只是数字,所以我仍然可以处理像Alt + F4这样的东西.也许不是每个人的完美解决方案,但所有我能得到的工作)
我正在尝试为一个名为uLCD32-pt的LCD设备编写一个脚本,问题是您需要以波特率9600连接它,并且为了获得更高的波特率,您必须连接它,发送更改波特率命令,然后以新设置的波特率发送新命令.在绘制像素时,我的液晶显示器显得非常慢,我知道它因为波特率,所以在连接到设备后,他们有什么方法可以改变波特率?到目前为止,这是我的代码?
import serial
import time
#Connect to uLCD32-pt with autobaud
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=9600,
timeout=1,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
ser.write("U")
while(True):
#15 x white pixels
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0001)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#1
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0002)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#2
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0003)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#3
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0004)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#4
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0005)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#5
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0006)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#6
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0007)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#7
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0008)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#8
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0009)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#9
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000A)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#10
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000B)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#11
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000C)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#12
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000D)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#13
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000E)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#14
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000F)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#15
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0010)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#16
Run Code Online (Sandbox Code Playgroud) 我有一个特定的USB设备,其Linux驱动程序源代码我想检查.我的理解是USB驱动程序采取的第一步是注册自己能够处理具有特定供应商ID和产品ID的设备.就我而言,供应商ID是0BDA,产品ID是8187.鉴于此信息,有没有一种方法可以找到将自身注册为能够处理此设备的源文件,以便找出实际执行驱动程序详细信息的其他源文件?
作为参考,我在内核上3.2.0-26.我试过了grep -rl 8187 /usr/src,但这列出了一大堆文件,我不知道从哪里开始.
请查看以下头文件
#pragma once
using namespace UsbLibrary;
ref class MissileLauncher
{
public:
MissileLauncher(void);
private:
//Bytes used in command
unsigned char UP[10];
unsigned char RIGHT[10];
unsigned char LEFT[10];
unsigned char DOWN[10];
unsigned char FIRE[10];
unsigned char STOP[10];
unsigned char LED_OFF[9];
unsigned char LED_ON[9];
UsbHidPort USB;
};
Run Code Online (Sandbox Code Playgroud)
我在visual studio professional 2010中使用Visual C++项目(C++/CLI?).当我运行此代码时,我遇到了很多错误
Error 1 error C4368: cannot define 'UP' as a member of managed 'MissileLauncher': mixed types are not supported
Error 2 error C4368: cannot define 'RIGHT' as a member of managed 'MissileLauncher': …Run Code Online (Sandbox Code Playgroud) 我总是使用覆盖WndProc(ref Message m)的方法来获取插入/删除驱动器的事件,并创建我自己的eventarg以返回驱动器号.这完美地工作但现在我正在忙于开发服务项目,显然不能使用上述方法.
我现在正在使用WMI:
//insert
WqlEventQuery creationQuery = new WqlEventQuery();
creationQuery.EventClassName = "__InstanceCreationEvent";
creationQuery.WithinInterval = new TimeSpan(0, 0, 2);
creationQuery.Condition = @"TargetInstance ISA 'Win32_DiskDriveToDiskPartition'";
ManagementEventWatcher creationWatcher = new ManagementEventWatcher(creationQuery);
creationWatcher.EventArrived += new EventArrivedEventHandler(USBEventArrived_Creation);
creationWatcher.Start();
Run Code Online (Sandbox Code Playgroud)
插入USB闪存时,这可以正确地触发事件.现在我需要帮助的是如何从事件中获取驱动器号(例如E :)?
这是我到目前为止在我的活动中玩过的:
internal void USBEventArrived_Creation(object sender, EventArrivedEventArgs e)
{
EventLog.WriteEntry("USB PLUGGED IN!");
ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
foreach (var property in instance.Properties)
{
EventLog.WriteEntry(property.Name + " = " + property.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
我无法从"属性"中获取驱动器号.有没有办法得到驱动器号?或者我是否需要从完全不同的角度来看问题?
我正在尝试搜索是否有一种方法可以主要禁用android设备的usb端口,软件级别。因此,用户仍然可以为Android设备充电,但无法再与PC通信。
我在link1中得到了一些线索。但是,看来没有一个简单的方法。
Android OS是基于Linux的操作系统。所以我想知道是否在Android OS中有一个配置文件,该文件允许root用户禁用USB端口,例如Linux OS中路径/ etc下的文件。
我想检测我的应用程序中插入/删除的特定USB.现在,我可以通过本教程使用USB设备接口获取deviceName .但是,如何在Swift 中执行(deviceAdded)IOServiceMatchingCallBack的回调函数.
我尝试如下,但我收到一个错误:无法将类型'(UnsafePointer,iterator:io_iterator_t) - >()'的值转换为预期的参数类型'IOServiceMatchingCallback!'
func detectUSBEvent() {
var portIterator: io_iterator_t = 0
var kr: kern_return_t = KERN_FAILURE
let matchingDict = IOServiceMatching(kIOUSBDeviceClassName)
let vendorIDString = kUSBVendorID as CFStringRef!
let productIDString = kUSBProductID as CFStringRef!
CFDictionarySetValue(matchingDict, unsafeAddressOf(vendorIDString), unsafeAddressOf(VendorID))
CFDictionarySetValue(matchingDict, unsafeAddressOf(productIDString), unsafeAddressOf(ProductID))
// To set up asynchronous notifications, create a notification port and add its run loop event source to the program’s run loop
let gNotifyPort: IONotificationPortRef = IONotificationPortCreate(kIOMasterPortDefault)
let runLoopSource: Unmanaged<CFRunLoopSource>! = IONotificationPortGetRunLoopSource(gNotifyPort)
let gRunLoop: …Run Code Online (Sandbox Code Playgroud) UTF-16需要2个字节,UTF-8需要1个字节.
USB是8bit导向,UTF-8更自然.
UTF-8向后兼容ASCII,而UTF-16则不兼容.
UTF-16需要2个字节,因此,它可能有字节序问题.
(发生了字节序问题,后来它被USB-IF清除为小端.)
UTF-16和UTF-8在功能上
但为什么选择UTF-16?为什么不是UTF-8?
UTF-16和UTF-8的比较:https: //en.wikipedia.org/wiki/UTF-8#Compared_to_UTF-16