(C#)如何检查物联网设备是否能够发送到物联网中心

(C#)如何检查物联网设备是否能够发送到物联网中心,c#,azure,iot,azure-iot-hub,C#,Azure,Iot,Azure Iot Hub,我正在使用amqp从我的物联网设备向Azure物联网中心发送消息。我正在用C#编写一个程序,我想检查设备是否能够与iot hub建立连接。 实现这一目标的最佳方式是什么?是否可以创建回调函数 我注意到我的一个设备位于封闭网络上,即amqp端口被阻塞。但是设备记录它正在向IoT Hub发送消息(没有引发异常),当我检查IoT Hub时,没有收到任何消息。这就是为什么我想检查设备是否能够与物联网集线器建立连接 java sdk有一个eventcallback类,但没有C#,或者我遗漏了什么 受保护的

我正在使用amqp从我的物联网设备向Azure物联网中心发送消息。我正在用C#编写一个程序,我想检查设备是否能够与iot hub建立连接。 实现这一目标的最佳方式是什么?是否可以创建回调函数

我注意到我的一个设备位于封闭网络上,即amqp端口被阻塞。但是设备记录它正在向IoT Hub发送消息(没有引发异常),当我检查IoT Hub时,没有收到任何消息。这就是为什么我想检查设备是否能够与物联网集线器建立连接

java sdk有一个eventcallback类,但没有C#,或者我遗漏了什么

受保护的静态类EventCallback实现IoTubEventCallback{
public void execute(IotHubStatusCode状态,对象上下文){
System.out.println(“IoT集线器以状态“+status.name()”响应消息);
} 
}

编辑: 这是一个好的实现吗


试一试{
client=DeviceClient.CreateFromConnectionString(“***”,TransportType.Amqp);
var task=client.OpenAsync();
task.Wait(30000);//等待30秒
如果(任务已完成){
控制台。写入线(“连接”);
等待client.CloseAsync();
}
否则{
抛出新异常(“超时”);
}
}
捕获(例外e){
控制台写入线(“错误”);
}

假设您正在使用,则初始化DeviceClient时连接实际上没有打开。当您调用SendEventAsync或ReceiveAsync方法时,它将被打开。您还可以调用OpenAsync()来尝试打开。如果无法建立通信或出现问题,将抛出异常

看看GitHub上的Azure IoT SDK示例。以下是指向AmqpSample的链接:

由于SDK是开源的,您可以查看Microsoft.Azure.Devices.Client代码,并查看不同连接故障(IoTubCommunicationException、UnauthorizedException等)将引发何种特定异常

对于测试,您可以使用设备资源管理器工具来管理设备,并监视/发送集线器的消息:

假设您正在使用,则在初始化DeviceClient时,连接实际上没有打开。当您调用SendEventAsync或ReceiveAsync方法时,它将被打开。您还可以调用OpenAsync()来尝试打开。如果无法建立通信或出现问题,将抛出异常

看看GitHub上的Azure IoT SDK示例。以下是指向AmqpSample的链接:

由于SDK是开源的,您可以查看Microsoft.Azure.Devices.Client代码,并查看不同连接故障(IoTubCommunicationException、UnauthorizedException等)将引发何种特定异常

对于测试,您可以使用设备资源管理器工具来管理设备,并监视/发送集线器的消息:

感谢@ian的帮助,我注意到我的一台设备位于封闭网络上,即amqp端口被阻塞。但是设备记录它正在向IoT Hub发送消息(没有引发异常),当我检查IoT Hub时,没有收到任何消息。这就是我想检查设备是否能够与IoT Hub建立连接的原因。我注意到java sdk有一个eventcallback类,但没有C#
受保护的静态类eventcallback实现IoTubEventCallback{public void execute(IoTubStatusCode status,Object context){System.out.println(“IoT Hub以状态“+status.name());}}
感谢@ian的帮助,我注意到我的一个设备位于封闭网络上,即amqp端口被阻止。但是设备记录它正在向IoT Hub发送消息(没有引发异常)当我检查Iot Hub时,没有收到任何消息。这就是为什么我想检查设备是否能够与Iot Hub建立连接。我注意到java sdk有一个eventcallback类,但没有C#
受保护的静态类eventcallback实现IoTubEventCallback{public void execute(IotHubStatusCode状态,对象上下文){System.out.println(“IoT Hub以状态“+status.name());}}}
请参阅