[UWP] [C ++]如何跨不同页面引用SerialDevice对象? [英] [UWP] [C++] How to refer SerialDevice object across different pages?

查看:59
本文介绍了[UWP] [C ++]如何跨不同页面引用SerialDevice对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个与串行设备通信的UWP应用程序。当我在单页上运行代码时,我能够从设备读取数据,但是当我要分割代码时,我想创建一个单独的设备连接页面"ConnectDevice.xaml"。这将允许
用户连接/断开设备,然后是其他页面"ReadData.xaml"。阅读&接收数据,我无法引用在"ConnectDevice.xaml.cpp"上创建的SerialDevice对象。查看要显示哪些数据的页面。



我尝试过使用extern功能&在全局范围内声明对象。

解决方案

Hello  Singh Hardeep,


似乎可以很好地实现单例模式。  Singleton Pattern 通常用作全局实例。您可以参考以下代码:


ClsSingletonSerialDevice.h

使用命名空间Windows :: Devices :: SerialCommunication; 

class ClsSingletonSerialDevice
{
public:
static SerialDevice ^ GetInstance(:: Platform :: String ^);

private:
ClsSingletonSerialDevice();
~ClsSingletonSerialDevice();
};

ClsSingletonSerialDevice.cpp

 #include" pch.h" 
#include" ClsSingletonSerialDevice.h"


静态SerialDevice ^ _serialDevice(nullptr);

SerialDevice ^ ClsSingletonSerialDevice :: GetInstance(:: Platform :: String ^ deviceId){


if(_serialDevice == nullptr)
{
_serialDevice = SerialDevice :: FromIdAsync(deviceId) - > GetResults();
}

return _serialDevice;
}

ClsSingletonSerialDevice :: ClsSingletonSerialDevice()
{

}

ClsSingletonSerialDevice :: ~ClsSingletonSerialDevice()
{
}

如何使用:


< pre class ="prettyprint"> SerialDevice ^ serialDevice = ClsSingletonSerialDevice :: GetInstance(" {deviceid}");




最好的问候,


Michael


I am creating a UWP App to communicate with a serial device. I am able to read data from device when i run code on single page, but when i am splitting code as i want to create a separate device connection page "ConnectDevice.xaml" which will let user to connect/disconnect to device and then other page "ReadData.xaml" to read & receive data, i am unable to refer SerialDevice Object created on "ConnectDevice.xaml.cpp" to page on which data is to be displayed.

I have tried using extern function & declaring object in global scope.

解决方案

Hello Singh Hardeep,

It seems that the singleton pattern can be implemented in a good way. Singleton Pattern is generally used as a global instance. You can refer to following code:

ClsSingletonSerialDevice.h

using namespace Windows::Devices::SerialCommunication;

class ClsSingletonSerialDevice
{
public:
	static SerialDevice^ GetInstance(::Platform::String^);

private:
	ClsSingletonSerialDevice();
	~ClsSingletonSerialDevice();
};

ClsSingletonSerialDevice.cpp

#include "pch.h"
#include "ClsSingletonSerialDevice.h"


static SerialDevice^ _serialDevice(nullptr);

SerialDevice^ ClsSingletonSerialDevice::GetInstance(::Platform::String^ deviceId) {
	

	if (_serialDevice == nullptr)
	{
		_serialDevice = SerialDevice::FromIdAsync(deviceId)->GetResults();
	}

	return _serialDevice;
}

ClsSingletonSerialDevice::ClsSingletonSerialDevice()
{
	
}

ClsSingletonSerialDevice::~ClsSingletonSerialDevice()
{
}

How to use:

SerialDevice^ serialDevice = ClsSingletonSerialDevice::GetInstance("{deviceid}");


Best Regards,

Michael


这篇关于[UWP] [C ++]如何跨不同页面引用SerialDevice对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆