从 U 盘中删除分区然后重新插入磁盘后,我看到以下内容dmesg:
[99341.658055] sd 4:0:0:0: [sdb] 15771720 512-byte logical blocks: (8.07 GB/7.52 GiB)
[99341.658670] sd 4:0:0:0: [sdb] Write Protect is off
[99341.658678] sd 4:0:0:0: [sdb] Mode Sense: 00 00 00 00
[99341.658684] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[99341.668175] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[99341.668187] sdb
Run Code Online (Sandbox Code Playgroud)
现在如何从命令行创建磁盘完整大小的分区 /dev/sdb1?
fdisk并parted问一些愚蠢的问题,例如分区的开始和结束。我希望分区只是填满整个磁盘。我认识的大多数人都诉诸于使用gparted,这是我不想要的。我只想要一个简单的衬垫来创建一个全尺寸的分区。
创建分区后我可能想要运行的下一个命令是mkfs.ext4 /dev/sdb1.
我使用专有协议通过 USB 与我构建的一些自定义硬件进行通信。我有一个 GUI 来处理与该硬件的所有通信/交互和一个 (C#) DLL,它公开了所有相关的 USB 功能。我需要编写一个LabVIEW驱动程序(VI)来与硬件进行通信。我的想法是我只是使用 LabVIEW 来打开我的 GUI 并有一个套接字,我可以使用它向 LabVIEW 公开所有相关的控件。是否可以在 LabVIEW 中打开一个套接字并与我的 GUI 进行通信?这是一种糟糕的方法,还是我应该尝试让 LabVIEW 调用 DLL 并处理硬件控制而不是我的 GUI(轮询通信、请求/未经请求的命令等)?
我正在尝试使用以下行写入 PS3 控制器(开发人员已正确设置)。
dev.ctrl_transfer(0x40, CTRL_LOOPBACK_WRITE, 0, 0, msg)
Run Code Online (Sandbox Code Playgroud)
我收到 CTRL_LOOPBACK_WRITE 未定义的错误。那么,它在哪里定义?或者我可以得到它的价值吗?
谢谢
我正在尝试使用 pywinusb 将输出报告发送到 pic18f4550。该设备可以接收数据,我已经使用 C# 应用程序对其进行了测试,效果很好。另外,我可以使用 pywinusb 从设备读取数据就好了,但是我在尝试发送数据时遇到了问题。
这是我正在运行的代码:
from pywinusb import hid
filter = hid.HidDeviceFilter(vendor_id = 0x0777, product_id = 0x0077)
devices = filter.get_devices()
if devices:
device = devices[0]
print "success"
device.open()
out_report = device.find_output_reports()[0]
buffer= [0x00]*65
buffer[0]=0x0
buffer[1]=0x01
buffer[2]=0x00
buffer[3]=0x01
out_report.set_raw_data(buffer)
out_report.send()
dev.close()
Run Code Online (Sandbox Code Playgroud)
它产生这个错误:
success
Traceback (most recent call last):
File "C:\Users\7User\Desktop\USB PIC18\out.py", line 24, in <module>
out_report.send()
File "build\bdist.win32\egg\pywinusb\hid\core.py", line 1451, in send
self.__prepare_raw_data()
File "build\bdist.win32\egg\pywinusb\hid\core.py", line 1406, in __prepare_raw_data
byref(self.__raw_data), self.__raw_report_size) )
File "build\bdist.win32\egg\pywinusb\hid\winapi.py", line 382, in …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 PyUSB 从 Ubuntu 上的 USB 设备进行批量读取和写入。但是,我一直没有成功做到这一点。
import usb.core
import usb.util
dev = usb.core.find(idVendor=0xXXXX,idProduct=0xYYYY)
if dev is None:
raise ValueError('Device not found.')
try:
dev.detach_kernel_driver(0)
except:
print "exception dev.detach_kernel_driver(0)"
pass
dev.set_configuration()
print "all done"
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的简单脚本。我创建了/etc/udev/rules.d/40-basic-rules.rules
其中包含
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device",SYSFS{idVendor}=="XXXX" , SYSFS{idProduct}=="YYYY", MODE="0666"
适合我的设备。
以 root 身份运行脚本会引发usb.core.USBError: [Errno 16] Resource busy错误,因为dev.detach_kernel_driver(0)抛出异常usb.core.USBError: [Errno 2] Entity not found
在 dmesg 我看到这些消息,
[ 638.007886] usb 1-1: usbfs: interface 1 claimed by usb-storage while 'python' sets config #1
[ 643.425802] usb …Run Code Online (Sandbox Code Playgroud) 我从块子系统中检索第一个设备信息.例如,将USB记忆棒分配给/ dev/sdb.这是我可以通过块子系统检索的所有信息:
[(u'DEVLINKS', u'/dev/disk/by-id/usb-Generic_Flash_Disk_63F2B6EC-0:0 /dev/disk/by-label/Fedora-Live-Desktop-x86_64-20-1 /dev/disk/by-path/pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:0 /dev/disk/by-uu
id/2013-12-12-00-56-55-00'),
(u'DEVNAME', u'/dev/sdb'),
(u'DEVPATH', u'/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host74/target74:0:0/74:0:0:0/block/sdb'),
(u'DEVTYPE', u'disk'), (u'ID_BUS', u'usb'),
(u'ID_FS_APPLICATION_ID', u'GENISOIMAGE\\x20ISO\\x209660\\x2fHFS\\x20FILESYSTEM\\x20CREATOR\\x20\\x28C\\x29\\x201993\\x20E.YOUNGDALE\\x20\\x28C\\x29\\x201997-2006\\x20J.PEARSON\\x2fJ.SCHILLING\\x20\\x28C\\x29\\x202006-2007\\x20CDRKIT\\x20TEAM'),
(u'ID_FS_BOOT_SYSTEM_ID', u'EL\\x20TORITO\\x20SPECIFICATION'),
(u'ID_FS_LABEL', u'Fedora-Live-Desktop-x86_64-20-1'),
(u'ID_FS_LABEL_ENC', u'Fedora-Live-Desktop-x86_64-20-1'),
(u'ID_FS_SYSTEM_ID', u'LINUX'),
(u'ID_FS_TYPE', u'iso9660'),
(u'ID_FS_USAGE', u'filesystem'),
(u'ID_FS_UUID', u'2013-12-12-00-56-55-00'),
(u'ID_FS_UUID_ENC', u'2013-12-12-00-56-55-00'),
(u'ID_FS_VERSION', u'Joliet Extension'),
(u'ID_INSTANCE', u'0:0'),
(u'ID_MODEL', u'Flash_Disk'),
(u'ID_MODEL_ENC', u'Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20'),
(u'ID_MODEL_ID', u'6387'),
(u'ID_PART_TABLE_TYPE', u'dos'),
(u'ID_PART_TABLE_UUID', u'5513338d'),
(u'ID_PATH', u'pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:0'),
(u'ID_PATH_TAG', u'pci-0000_00_1d_0-usb-0_1_2_1_0-scsi-0_0_0_0'),
(u'ID_REVISION', u'8.07'),
(u'ID_SERIAL', u'Generic_Flash_Disk_63F2B6EC-0:0'),
(u'ID_SERIAL_SHORT', u'63F2B6EC'),
(u'ID_TYPE', u'disk'),
(u'ID_USB_DRIVER', u'usb-storage'),
(u'ID_USB_INTERFACES', u':080650:'),
(u'ID_USB_INTERFACE_NUM', u'00'),
(u'ID_VENDOR', u'Generic'),
(u'ID_VENDOR_ENC', u'Generic\\x20'),
(u'ID_VENDOR_ID', u'058f'),
(u'MAJOR', u'8'),
(u'MINOR', u'16'),
(u'MPATH_SBIN_PATH', u'/sbin'),
(u'SUBSYSTEM', …Run Code Online (Sandbox Code Playgroud) EDITED
你好程序员社区,
我在Python 3.4中处理pyserial有一些问题我首先没有串口,所以我用"Eltima Software的虚拟串口驱动7.2"成对创建虚拟串口,这意味着我可以尝试从这些端口发送和接收数据,在我的情况下我只创建连接到COM2的COM1,然后我安装了HW组的Hercules SETUP实用程序来监控这些串口,
所以理论上如果我在PYTHON中发送(写入)数据我可以在HERCULES中看到它,因为这个链接显示https://www.youtube.com/watch?v=DItyttmpRtY
我试图创建自己的代码
def mInitizalise():
set_ser = serial.Serial(port="COM1", baudrate=9600,
parity = serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize = serial.EIGHTBITS,
timeout=1)
set_ser.close()
set_ser.open()
if set_ser.isOpen():
print ('Open: ' + set_ser.portstr)
temp = input('Type what you want to send, hit enter:\r\n')
set_ser.write(temp)
set_ser.close()
Run Code Online (Sandbox Code Playgroud)
买有错误
>>>
>>> Open: COM1
Type what you want to send, hit enter:
hello
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\idlelib\run.py", line 121, in main
seq, request = rpc.request_queue.get(block=True, timeout=0.05)
File "C:\Python34\lib\queue.py", …Run Code Online (Sandbox Code Playgroud) 如何在.NET 4.0中处理从C#中的设备读取批量数据?具体来说,我需要从USB HID设备快速读取,该设备发出超过26个数据包的报告,其中必须保留订单.
我试过在BackgroundWorker线程中这样做.它一次从设备读取一个数据包,然后在阅读更多信息之前对其进行处理.这提供了相当好的响应时间,但它可能会丢失数据包,并且单个数据包读取的开销成本会增加.
while (!( sender as BackgroundWorker ).CancellationPending) {
//read a single packet
//check for header or footer
//process packet data
}
}
Run Code Online (Sandbox Code Playgroud)
C#中读取这样的设备的最佳做法是什么?
背景:
我的USB HID设备不断报告大量数据.数据分为26个数据包,我必须保留订单.不幸的是,设备只标记每个报告中的最后一个数据包,因此我需要能够捕获其间的所有其他数据包.
我在mac OS X 10.11上面临这个问题 - 即.一些kext已经接管了我的设备,我不能声称它libusb.有可能找出哪一个?这是有问题的设备:
$ system_profiler SPUSBDataType
[...]
mEDBG CMSIS-DAP:
Product ID: 0x2145
Vendor ID: 0x03eb (Atmel Corporation)
Version: 10.00
Serial Number: ATML2323040200017792
Speed: Up to 12 Mb/sec
Manufacturer: ATMEL
Location ID: 0x14130000 / 13
Current Available (mA): 1000
Current Required (mA): 100
Extra Operating Current (mA): 0
Run Code Online (Sandbox Code Playgroud) 可能是错误的地方问这个,但我需要帮助弄清楚真正的问题是什么...
基本上,我正在编程一个微控制器来进行USB音频录制(使用USB Audio Class 2.0 /高速USB).看起来我已经非常接近"正确"了,但是当我将唧唧声录入大胆时,我得到了这个[下面是摘录]:
我想我要问的是为什么我会在记录会话中遇到这些奇怪的中断和跳跃?是因为我没有足够快地读取我的编解码器输入缓冲区,或者帧长度未正确设置?
我如何计算我从Apple的USB音频指南中获得的帧长度(使用44.1kHz采样率和16位速率):
#define AUDIO_POLL_INT 4
#define FRAME_BYTES (BIT_RATE_16 / 8)
#define NUM_CHANNELS STEREO
uint16_t frame_len = 44 (44.1kHz/1000 samples) * NUM_CHANNELS * FRAME_BYTES;
if (!(frame_pos % 9)) frame_len += (1 * NUM_CHANNELS * FRAME_BYTES)
frame_len = (frame_len / 8) * (2 << (AUDIO_POLL_INT-1));
// 10 ms frames
frame_pos = (((frame_pos + 1) / 8) * (2 << (AUDIO_POLL_INT-1))) % 10;
Run Code Online (Sandbox Code Playgroud)
这也是读取编解码器输入的过程:
1)读取编解码器输入; 将样本加载到临时缓冲区(从编解码器外设转移到内存外设)
2)存储器在传输完成时发生外设中断(缓冲区已满;已满足frame_len容量),将缓冲区样本发送到USB.然后,再次读取编解码器输入
希望这不是太混乱...让我知道,我可以添加更多信息/清理事情.谢谢!