电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Linux中如何查看usb設備信息

瀏覽:5日期:2023-10-05 21:01:20
目錄一、cat設備節點獲取信息1、usb設備在總線上的信息2、特定設備的詳細信息二、使用debugfs1、掛載 debugfs 到 /sys/kernel/debug 路徑下2、執行上述步驟之后3、cat 設備節點總結

下面的信息都是在VMware中運行Ubuntu12-04系統上執行的。

同樣該命令也支持在嵌入式系統中進行USB調試。

一、cat設備節點獲取信息

在一些嵌入式開發中需要調試USB功能,經常會cat /sys 下的相關設備節點來查看某些信息,比如說我們可以看到 /sys/bus/usb/devices 目錄有多個子目錄。

進入到某個子目錄可以看到usb設備更加詳細的信息(可以理解為設備描述符)。

1、usb設備在總線上的信息// usb設備在總線上的信息root@ubuntu:/sys/kernel/debug# cd /sys/bus/usb/devicesroot@ubuntu:/sys/bus/usb/devices# lltotal 0drwxr-xr-x 2 root root 0 Nov 26 21:21 ./drwxr-xr-x 4 root root 0 Nov 26 21:21 ../lrwxrwxrwx 1 root root 0 Nov 26 21:21 1-0:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-0:1.0/lrwxrwxrwx 1 root root 0 Dec 15 23:10 1-1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/lrwxrwxrwx 1 root root 0 Dec 15 23:18 1-1:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-0:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-0:1.0/lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-1:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/2-1:1.0/lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-2:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2:1.0/lrwxrwxrwx 1 root root 0 Nov 26 21:21 usb1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/lrwxrwxrwx 1 root root 0 Nov 26 21:21 usb2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/

其中 usbx/第x個總線,x-y:a.b/的目錄格式,x表示總線號,y表示端口,a表示配置,b表示接口。

具體解釋可以參照如下:

The names that begin with 'usb' refer to USB controllers. More accurately, they refer to the 'root hub' associated with each controller. The number is the USB bus number. In the example there is only one controller, so its bus is number 1. Hence the name 'usb1'.'1-0:1.0' is a special case. It refers to the root hub's interface. This acts just like the interface in an actual hub an almost every respect; see below.All the other entries refer to genuine USB devices and their interfaces. The devices are named by a scheme like this: bus-port.port.port ...In other words, the name starts with the bus number followed by a '-'. Then comes the sequence of port numbers for each of the intermediate hubs along the path to the device.For example, '1-1' is a device plugged into bus 1, port 1. It happens to be a hub, and '1-1.3' is the device plugged into port 3 of that hub. That device is another hub, and '1-1.3.1' is the device plugged into its port 1.The interfaces are indicated by suffixes having this form: :config.interfaceThat is, a ':' followed by the configuration number followed by '.' followed by the interface number. In the above example, each of the devices is using configuration 1 and this configuration has only a single interface, number 0. So the interfaces show up as; 1-1:1.0 1-1.3:1.0 1-1.3.1:1.0A hub will never have more than a single interface; that's part of the USB spec. But other devices can and do have multiple interfaces (and sometimes multiple configurations). Each interface gets its own entry in sysfs and can have its own driver.2、特定設備的詳細信息

進入到某個目錄中去,可以看到該設備的詳細信息,可用cat命令獲取信息。

// usb設備的詳細信息root@ubuntu:/sys/bus/usb/devices/usb1# lltotal 0drwxr-xr-x 6 root root 0 Nov 26 21:21 ./drwxr-xr-x 4 root root 0 Nov 26 21:21 ../drwxr-xr-x 10 root root 0 Nov 26 21:21 1-0:1.0/drwxr-xr-x 5 root root 0 Dec 15 23:10 1-1/-rw-r--r-- 1 root root 4096 Dec 15 23:40 authorized-rw-r--r-- 1 root root 4096 Dec 15 23:40 authorized_default-rw-r--r-- 1 root root 4096 Dec 15 23:40 avoid_reset_quirk-r--r--r-- 1 root root 4096 Nov 26 21:21 bcdDevice-rw-r--r-- 1 root root 4096 Nov 26 21:21 bConfigurationValue-r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceClass-r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceProtocol-r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceSubClass-r--r--r-- 1 root root 4096 Dec 15 23:40 bmAttributes-r--r--r-- 1 root root 4096 Dec 15 23:40 bMaxPacketSize0-r--r--r-- 1 root root 4096 Dec 15 23:40 bMaxPower-r--r--r-- 1 root root 4096 Dec 15 23:40 bNumConfigurations-r--r--r-- 1 root root 4096 Dec 15 23:40 bNumInterfaces-r--r--r-- 1 root root 4096 Nov 26 21:21 busnum-r--r--r-- 1 root root 4096 Dec 15 23:40 configuration-r--r--r-- 1 root root 65553 Nov 26 21:21 descriptors-r--r--r-- 1 root root 4096 Dec 15 23:40 dev-r--r--r-- 1 root root 4096 Nov 26 21:21 devnum-r--r--r-- 1 root root 4096 Dec 15 23:40 devpathlrwxrwxrwx 1 root root 0 Nov 27 20:06 driver -> ../../../../../bus/usb/drivers/usb/drwxr-xr-x 3 root root 0 Dec 15 23:40 ep_00/-r--r--r-- 1 root root 4096 Nov 26 21:21 idProduct-r--r--r-- 1 root root 4096 Nov 26 21:21 idVendor-r--r--r-- 1 root root 4096 Dec 15 23:40 ltm_capable-r--r--r-- 1 root root 4096 Nov 26 21:21 manufacturer-r--r--r-- 1 root root 4096 Dec 15 23:40 maxchilddrwxr-xr-x 2 root root 0 Nov 26 21:21 power/-r--r--r-- 1 root root 4096 Nov 26 21:21 product-r--r--r-- 1 root root 4096 Dec 15 23:40 quirks-r--r--r-- 1 root root 4096 Nov 26 21:21 removable--w------- 1 root root 4096 Dec 15 23:40 remove-r--r--r-- 1 root root 4096 Nov 26 21:21 serial-r--r--r-- 1 root root 4096 Nov 26 21:21 speedlrwxrwxrwx 1 root root 0 Nov 26 21:21 subsystem -> ../../../../../bus/usb/-rw-r--r-- 1 root root 4096 Nov 26 21:21 uevent-r--r--r-- 1 root root 4096 Dec 15 23:40 urbnum-r--r--r-- 1 root root 4096 Dec 15 23:40 version二、使用debugfs1、掛載 debugfs 到 /sys/kernel/debug 路徑下root@ubuntu:mount -t debugfs none /sys/kernel/debug2、執行上述步驟之后

在 /sys/kernel/debug 就會生成如下的文件

root@ubuntu:/sys/bus/usb/devices# cd /sys/kernel/debug/root@ubuntu:/sys/kernel/debug# lltotal 0drwx------ 22 root root 0 Nov 26 21:21 ./drwxr-xr-x 7 root root 0 Nov 26 21:21 ../drwxr-xr-x 2 root root 0 Nov 26 21:21 acpi/drwxr-xr-x 32 root root 0 Dec 4 16:30 bdi/drwxr-xr-x 2 root root 0 Nov 26 21:21 bluetooth/drwxr-xr-x 2 root root 0 Nov 26 21:21 cleancache/drwxr-xr-x 2 root root 0 Nov 26 21:21 dma_buf/drwxr-xr-x 4 root root 0 Nov 26 21:21 dri/drwxr-xr-x 2 root root 0 Nov 26 21:21 dynamic_debug/drwxr-xr-x 2 root root 0 Nov 26 21:21 extfrag/drwxr-xr-x 2 root root 0 Nov 26 21:21 frontswap/-r--r--r-- 1 root root 0 Nov 26 21:21 gpiodrwxr-xr-x 3 root root 0 Nov 26 21:21 hid/drwxr-xr-x 2 root root 0 Nov 26 21:21 kprobes/drwxr-xr-x 3 root root 0 Nov 26 21:21 kvm-guest/drwxr-xr-x 2 root root 0 Nov 26 21:21 mce/drwxr-xr-x 2 root root 0 Nov 26 21:21 pinctrl/-r--r--r-- 1 root root 0 Nov 26 21:21 pwmdrwxr-xr-x 2 root root 0 Nov 26 21:21 regmap/drwxr-xr-x 3 root root 0 Nov 26 21:21 regulator/-rw-r--r-- 1 root root 0 Nov 26 21:21 sched_features-r--r--r-- 1 root root 0 Nov 26 21:21 sleep_time-r--r--r-- 1 root root 0 Nov 26 21:21 suspend_statsdrwxr-xr-x 7 root root 0 Nov 26 21:21 tracing/drwxr-xr-x 3 root root 0 Nov 26 21:21 usb/drwxr-xr-x 2 root root 0 Nov 26 21:21 virtio-ports/-r--r--r-- 1 root root 0 Nov 26 21:21 vmmemctl-r--r--r-- 1 root root 0 Nov 26 21:21 wakeup_sourcesdrwxr-xr-x 2 root root 0 Nov 26 21:21 x86/3、cat 設備節點

執行下述命令之后會以特定格式打印目前USB總線上所有USB設備的信息如下:

root@ubuntu:/sys/kernel/debug# cat usb/devices T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2B: Alloc= 17/900 us ( 2%), #Int= 1, #Iso= 0D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1P: Vendor=1d6b ProdID=0001 Rev= 3.13S: Manufacturer=Linux 3.13.0-32-generic uhci_hcdS: Product=UHCI Host ControllerS: SerialNumber=0000:02:00.0C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mAI:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hubE: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255msT: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1P: Vendor=0e0f ProdID=0003 Rev= 1.03S: Manufacturer=VMwareS: Product=VMware Virtual USB MouseC:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mAI:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhidE: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=1msT: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 7D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1P: Vendor=0e0f ProdID=0002 Rev= 1.00S: Product=VMware Virtual USB HubC:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mAI:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hubE: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255msT: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1P: Vendor=1d6b ProdID=0002 Rev= 3.13S: Manufacturer=Linux 3.13.0-32-generic ehci_hcdS: Product=EHCI Host ControllerS: SerialNumber=0000:02:03.0C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mAI:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hubE: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256msT: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 7 Spd=480 MxCh= 0D: Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 1P: Vendor=0bda ProdID=0129 Rev=39.60S: Manufacturer=GenericS: Product=USB2.0-CRWS: SerialNumber=20100201396000000C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mAI:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=06 Prot=50 Driver=rts5139E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0msE: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0msE: Ad=83(I) Atr=03(Int.) MxPS= 3 Ivl=64ms

至于信息的詳細解析可以參照 Linux源代碼中 Documentation/usb/proc_usb_info.txt 文件。

現摘錄其中對該格式的詳細解釋:

Each line is tagged with a one-character ID for that line:T = Topology (etc.)B = Bandwidth (applies only to USB host controllers, which are virtualized as root hubs)D = Device descriptor info.P = Product ID info. (from Device descriptor, but they won't fit together on one line)S = String descriptors.C = Configuration descriptor info. (* = active configuration)I = Interface descriptor info.E = Endpoint descriptor info.Legend: d = decimal number (may have leading spaces or 0's) x = hexadecimal number (may have leading spaces or 0's) s = stringTopology info:T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=dddd MxCh=dd| | | | | | |||__MaxChildren| | | | | | ||__Device Speed in Mbps| | | | | | |__DeviceNumber| | | | | |__Count of devices at this level| | | | |__Connector/Port on Parent for this device| | | |__Parent DeviceNumber| | |__Level in topology for this bus| |__Bus number|__Topology info tag Speed may be:1.5 Mbit/s for low speed USB 12 Mbit/s for full speed USB 480 Mbit/s for high speed USB (added for USB 2.0); also used for Wireless USB, which has no fixed speed 5000 Mbit/s for SuperSpeed USB (added for USB 3.0) For reasons lost in the mists of time, the Port number is always too low by 1. For example, a device plugged into port 4 will show up with 'Port=03'.Bandwidth info:B: Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd| | | |__Number of isochronous requests| | |__Number of interrupt requests| |__Total Bandwidth allocated to this bus|__Bandwidth info tag Bandwidth allocation is an approximation of how much of one frame (millisecond) is in use. It reflects only periodic transfers, which are the only transfers that reserve bandwidth. Control and bulk transfers use all other bandwidth, including reserved bandwidth that is not used for transfers (such as for short packets). The percentage is how much of the 'reserved' bandwidth is scheduled by those transfers. For a low or full speed bus (loosely, 'USB 1.1'), 90% of the bus bandwidth is reserved. For a high speed bus (loosely, 'USB 2.0') 80% is reserved.Device descriptor info & Product ID info:D: Ver=x.xx Cls=xx(s) Sub=xx Prot=xx MxPS=dd #Cfgs=ddP: Vendor=xxxx ProdID=xxxx Rev=xx.xxwhereD: Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd| || | | | |__NumberConfigurations| || | | |__MaxPacketSize of Default Endpoint| || | |__DeviceProtocol| || |__DeviceSubClass| ||__DeviceClass| |__Device USB version|__Device info tag #1whereP: Vendor=xxxx ProdID=xxxx Rev=xx.xx| | | |__Product revision number| | |__Product ID code| |__Vendor ID code|__Device info tag #2String descriptor info:S: Manufacturer=ssss| |__Manufacturer of this device as read from the device.| For USB host controller drivers (virtual root hubs) this may| be omitted, or (for newer drivers) will identify the kernel| version and the driver which provides this hub emulation.|__String info tagS: Product=ssss| |__Product description of this device as read from the device.| For older USB host controller drivers (virtual root hubs) this| indicates the driver; for newer ones, it's a product (and vendor)| description that often comes from the kernel's PCI ID database.|__String info tagS: SerialNumber=ssss| |__Serial Number of this device as read from the device.| For USB host controller drivers (virtual root hubs) this is| some unique ID, normally a bus ID (address or slot name) that| can't be shared with any other device.|__String info tagConfiguration descriptor info:C:* #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA| | | | | |__MaxPower in mA| | | | |__Attributes| | | |__ConfiguratioNumber| | |__NumberOfInterfaces| |__ '*' indicates the active configuration (others are ' ')|__Config info tag USB devices may have multiple configurations, each of which act rather differently. For example, a bus-powered configuration might be much less capable than one that is self-powered. Only one device configuration can be active at a time; most devices have only one configuration. Each configuration consists of one or more interfaces. Each interface serves a distinct 'function', which is typically bound to a different USB device driver. One common example is a USB speaker with an audio interface for playback, and a HID interface for use with software volume control.Interface descriptor info (can be multiple per Config):I:* If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss| | | | | | | | |__Driver name| | | | | | | | or '(none)'| | | | | | | |__InterfaceProtocol| | | | | | |__InterfaceSubClass| | | | | |__InterfaceClass| | | | |__NumberOfEndpoints| | | |__AlternateSettingNumber| | |__InterfaceNumber| |__ '*' indicates the active altsetting (others are ' ')|__Interface info tag A given interface may have one or more 'alternate' settings. For example, default settings may not use more than a small amount of periodic bandwidth. To use significant fractions of bus bandwidth, drivers must select a non-default altsetting. Only one setting for an interface may be active at a time, and only one driver may bind to an interface at a time. Most devices have only one alternate setting per interface.Endpoint descriptor info (can be multiple per Interface):E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddss| || | |__Interval (max) between transfers| || |__EndpointMaxPacketSize| ||__Attributes(EndpointType)| |__EndpointAddress(I=In,O=Out)|__Endpoint info tag The interval is nonzero for all periodic (interrupt or isochronous) endpoints. For high speed endpoints the transfer interval may be measured in microseconds rather than milliseconds. For high speed periodic endpoints, the 'MaxPacketSize' reflects the per-microframe data transfer size. For 'high bandwidth' endpoints, that can reflect two or three packets (for up to 3KBytes every 125 usec) per endpoint. With the Linux-USB stack, periodic bandwidth reservations use the transfer intervals and sizes provided by URBs, which can be less than those found in endpoint descriptor.總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Linux
主站蜘蛛池模板: 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 动力配电箱-不锈钢配电箱-高压开关柜-重庆宇轩机电设备有限公司 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 学习安徽网| 伺服电机维修、驱动器维修「安川|三菱|松下」伺服维修公司-深圳华创益 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 好物生环保网、环保论坛 - 环保人的学习交流平台 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌| 探鸣起名网-品牌起名-英文商标起名-公司命名-企业取名包满意 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 昆山新莱洁净应用材料股份有限公司-卫生级蝶阀,无菌取样阀,不锈钢隔膜阀,换向阀,离心泵 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 短信营销平台_短信群发平台_106短信发送平台-河南路尚 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 石英砂矿石色选机_履带辣椒色选机_X光异物检测机-合肥幼狮光电科技 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 粘度计,数显粘度计,指针旋转粘度计 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 深圳活动策划公司|庆典策划|专业公关活动策划|深圳艺典文化传媒 重庆中专|职高|技校招生-重庆中专招生网 | 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 欧盟ce检测认证_reach检测报告_第三方检测中心-深圳市威腾检验技术有限公司 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 高压微雾加湿器_工业加湿器_温室喷雾-昌润空气净化设备 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 济南铝方通-济南铝方通价格-济南方通厂家-山东鲁方通建材有限公司 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 开锐教育-学历提升-职称评定-职业资格培训-积分入户 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 |