我的公司编写安装在客户端计算机上的软件来执行销售点交易.该软件可与各种外围设备(收据打印机,条形码扫描仪,信用卡读卡器等)连接.我们使用Microsoft OPOS库在Visual Studio中创建的WinForms应用程序执行此操作,后者又与我们的云服务器(客户端 - 服务器模型)进行通信.
该模型明显效率低下,主要是更新.我正在研究通过网络与这些外围设备进行通信的其他方式,最好是通过网络浏览器.据我所知,Java是唯一可以做我们正在寻找的技术之一(通过applet),我也认为Adobe Flash也可以(通过Air平台).这些是可行的,但不是优选的,因为我们希望在支持Web的移动设备上运行我们的软件.
有没有人建议通过网络与外围设备进行通信的其他方式?
众所周知,iOS 6支持运行设备(iPhone 4s及更高版本,以及新iPad)作为BLE外设.WWDC 2012 Session 705中有一个名为"高级核心蓝牙"的演示.我问过Apple的源代码.他们发给我一个修改后的源代码版本(BTLE_Transfer_Draft).然后我:
问题是外围设备从未被发现过.所以我使用其他测试应用程序,包括从App Store下载的一些.所有人都未能发现外围设备.我认为问题应该在BTLE_Transfer_Draft中.因为我不确定是否允许我提供整个源代码.所以我只在这里展示"外围模式"部分:
- (void)viewDidLoad {
[super viewDidLoad];
// Start up the CBPeripheralManager
_peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];
}
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral {
// Opt out from any other state
if (peripheral.state != CBPeripheralManagerStatePoweredOn) {
return;
}
// We're in CBPeripheralManagerStatePoweredOn state...
NSLog(@"self.peripheralManager powered on.");
// ... so build our service.
// Start with the CBMutableCharacteristic
self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]
properties:CBCharacteristicPropertyNotify
value:nil
permissions:CBAttributePermissionsReadable];
// Then the service …Run Code Online (Sandbox Code Playgroud) 到目前为止,我已经开发了几个程序,用于我的Raspberry Rpi2和RPi3,作为使用bleno的 BLE perifpherals.有没有人可以告诉我,如果有替代Bleno的东西,在Python中甚至更好用C语言,为我的Raspberry开发BLE外围设备服务的代码?
我正在寻求通过USB连接到计算机的简单继电器开关控制电源供电.
继电器开关甚至不是USB设备,它只是一个简单的开关,需要USB电压才能打开它.当电压降至阈值以下时,开关将关闭灯.
我的问题是我无法控制USB端口的电源输出.我很高兴在Windows或Linux上使用任何语言(但最好是Java,因为我已经习惯了).
我试图在NEXUS 9中做广告并得到ADVERTISE_FAILED_DATA_TOO_LARGE的错误.在成功通告后添加服务时,它工作得非常好但是如果我通过"广告数据"构建器添加服务以便其他设备可以在扫描时进行过滤,则会收到错误代码1,即ADVERTISE_FAILED_DATA_TOO_LARGE
a)工作准则
public void startAdvertisingService() {
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH)
.setTimeout(0)
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)
.build();
AdvertiseData.Builder advertiseData = new AdvertiseData.Builder();
advertiseData.setIncludeDeviceName(true);
BluetoothLeAdvertiser myBluetoothLeAdvertiser = btAdapter.getBluetoothLeAdvertiser();
myBluetoothLeAdvertiser.stopAdvertising(mAdvertiseCallback);
myBluetoothLeAdvertiser.startAdvertising(settings, advertiseData.build(),mAdvertiseCallback);
}
private AdvertiseCallback mAdvertiseCallback = new AdvertiseCallback() {
@Override
public void onStartSuccess(AdvertiseSettings settingsInEffect) {
super.onStartSuccess(settingsInEffect);
BLEBroadcast();
}
@Override
public void onStartFailure(int errorCode) {
String description = "";
if (errorCode == AdvertiseCallback.ADVERTISE_FAILED_FEATURE_UNSUPPORTED)
description = "ADVERTISE_FAILED_FEATURE_UNSUPPORTED";
else if (errorCode == AdvertiseCallback.ADVERTISE_FAILED_TOO_MANY_ADVERTISERS)
description = "ADVERTISE_FAILED_TOO_MANY_ADVERTISERS";
else if (errorCode …Run Code Online (Sandbox Code Playgroud) peripherals android bluetooth bluetooth-lowenergy cbperipheral
我想根据 MBP 上的相机使用情况自动化个人工作流程。
基本上我想知道是否有任何相机(内置或 USB)已打开或关闭,以便我可以运行我将创建的程序或脚本。
我认为如果我需要轮询相机状态也可以,但基于事件或回调的解决方案将是理想的
我想在某个事件被触发后循环(模拟拔出并重新插入)USB设备(调制解调器).我在codeproject上找到了一个示例:
这允许我通过其非易失性串口识别+弹出设备,但我需要它来回收,而不仅仅是弹出.
我读过这个:
我不明白.
其他USB相关帖子中已经提到过:
这与我的问题无关.
我正在开发一个系统,它有一个BLE设备(TI CC2540)作为Central,一个iOS应用程序在iPhone4S上作为外围设备.一切正常,除了我需要的1个功能:来自中心侧的白名单(过滤)广告设备.
据我所知,iOS设备使用随机可解析的MAC地址,因此我们无法应用基于MAC地址的白名单.
所以我目前的方法是:在iOS app的广告数据上放置一个ID"Local name"字段(iOS设备充当外围设备),中央设备将根据检索到的广告数据进行扫描和过滤.除非app在后台,否则此方法有效.
当我的应用程序放在后台时,广告数据被截断,我的"本地名称"不会出现在空中.从corebluetooth的头文件,我看到app在后台时只有"溢出区"数据可以在广告数据中,但只有iOS设备才能读取该区域.
所以这里的任何人都可以点亮我如何将自定义数据添加到广告包中,即使在后台模式下,或任何其他具有此过滤功能的解决方案.
任何评论都会对我有所帮助.
我们正在开发一种可与iPad配合使用的BLE传感器外设,它需要使用TI CC2541 BLE模块和自定义配置文件的BLE通知特性(无应答)的以下吞吐量数据:
每10ms一个20字节(GATT最大标准数据包),或者因为我们似乎每个连接间隔限制4个数据包,这相当于每40ms一个连接间隔.所需吞吐量为每秒2,000字节,TI网站建议将CC2541 BLE解决方案用于需要此级别数据吞吐量的多个传感器设备.
BLE模块的配置文件设置为最小和最大连接间隔分别为20ms和40ms,这应该足够了."Apple产品的蓝牙配件设计指南"文档表明,我们设置的最小和最大连接间隔如上所述是正确的.我们在新的Mac Mini/Mac Book上使用适用于iOS 6的最新iPad和Apple工具.
通过iPad上的简单测试程序,我们可以使链接能够以20ms的间隔向BLE外设发送20字节数据包,但是一旦我们按需要将其降低到10ms,我们就开始丢失数据包或者获取损坏的数据包,我们有FIFO空中断关闭,因此我们可以更快地处理向BLE模块FIFO的发送,我们使用最大波特率230400将20字节数据包从微处理器发送到BLE TX FIFO.
我们意识到我们处于BLE转移限制的最高端,并且是可能的.任何人都可以建议使用带有最新iPad的TI CC2541 BLE芯片/模块是否有解决方案来实现每秒2000字节的吞吐量?
低功耗蓝牙规范并未说明外设是否可以一次连接到多个中心,但我的测试经验告诉我他们不能.
因为我的应用程序需要与外围设备的非占有关系(即没有连接,这会阻止其他连接),并且需要不断更新其RSSI值,我正在寻找一种方法来连续扫描外设并捕获它们的RSSI值.
scanForPeripheralsWithServices方法似乎扫描一定的间隔然后停止.我相信我最好的选择是一次扫描3秒,stopScan,等待(几秒钟),然后重新开始扫描.重复.
任何人都可以指出一种更好的方法吗?例如,配置外围设备以连接到多个Central?
peripherals bluetooth ios core-bluetooth bluetooth-lowenergy
peripherals ×10
ios ×4
bluetooth ×2
usb ×2
android ×1
api ×1
automation ×1
bleno ×1
c# ×1
camera ×1
cbperipheral ×1
controls ×1
device ×1
html5 ×1
macos ×1
python ×1
stack ×1
throughput ×1