gpt4 book ai didi

c# - 你调用的对象是空的。使用 TPM 设备客户端发送消息时

转载 作者:行者123 更新时间:2023-12-03 05:06:43 25 4
gpt4 key购买 nike

我们有一个带有 bpm180 传感器的树莓派 pi3,我们像这样初始化连接

 TpmDevice myDevice = new TpmDevice(0); // Use logical device 0 on the TPM
string hubUri = myDevice.GetHostName();
string deviceId = myDevice.GetDeviceId();
string sasToken = myDevice.GetSASToken();

deviceClient = DeviceClient.Create(
hubUri,
Microsoft.Azure.Devices.Client.AuthenticationMethodFactory.
CreateAuthenticationWithToken(deviceId, sasToken), Microsoft.Azure.Devices.Client.TransportType.Amqp);

然后我们发送这样的消息:

public async void Bpm180Tick(object state)
{
string temperatureText;
try
{
var sensorData = await _bmp180.GetSensorDataAsync(Bmp180AccuracyMode.UltraHighResolution);
temperatureText = sensorData.Temperature.ToString("");
temperatureText += "°C";
var temperatureDataPoint = new
{
deviceId = Global.GlobalTemperature,
valor = sensorData.Temperature,
fecha = DateTime.Now
};
//// actualizaciones de la interfaz de usuario... deben ser invocados en el subproceso de interfaz de usuario
var messageString = JsonConvert.SerializeObject(temperatureDataPoint);
var message = new Microsoft.Azure.Devices.Client.Message(Encoding.ASCII.GetBytes(messageString));
//message.Properties["Ambiente"] = ambiente;
//autoResetEvent.WaitOne();
await deviceClient.SendEventAsync(message);
//autoResetEvent.Set();
var task = this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
Txt_Temperaura.Text = temperatureText;
});
}
catch (Exception ex)
{
var a = ex.StackTrace;
temperatureText = "Sensor Error: " + ex.Message;
}


}

但是我们正在获取对象引用,但错误似乎在库(sdk)中,而不是在我们的代码中

堆栈跟踪是这样的Ñ

  at Microsoft.Azure.Devices.Client.Transport.AmqpTransportHandler.<SendAmqpMessageAsync>d__27.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Devices.Client.Transport.AmqpTransportHandler.<SendEventAsync>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.<>c__DisplayClass13_0.<<ExecuteWithErrorHandlingAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.<ExecuteWithErrorHandlingAsync>d__14`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Devices.Client.Transport.GateKeeperDelegatingHandler.<SendEventAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at ActiveSense.Tempsense.Sensor.MainPage.<Bpm180Tick>d__23.MoveNext()

最佳答案

我想知道在异步代码运行时,TemperatureText 是否可能不再存在。我首先尝试将其设为静态类变量,看看会发生什么。

关于c# - 你调用的对象是空的。使用 TPM 设备客户端发送消息时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40290568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com