У меня есть два связанных вопроса относительно кода, включенного ниже
1) Я пытаюсь читать с последовательного порта, который является частью формы Visual C ++. Я хочу создать поток в функции InitializeComponent, но я получаю эту ошибку на странице формы, когда я включаю вызов для запуска потока:
"Предупреждение 1 Не удалось найти тип 'Thread'. Убедитесь, что на сборку, содержащую этот тип, ссылаются. Если этот тип является частью вашего проекта разработки, убедитесь, что проект был успешно построен."
2) Поток будет работать в статической функции Read. Для чтения необходимо разрешить последовательный порт, который находится в главной форме (последовательный порт называется arduino),
но он, очевидно, не может их разрешить: «слева от .ReadLine 'должен быть класс / структура / объединение»
Предложения
using namespace System::IO::Ports;
using namespace System::Threading;
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
private: void static Read(void)
{
while (1)
{
try
{
String^ message = arduino.ReadLine();
// this->ArduinoOutputTextBox->Text = message;
}
catch (TimeoutException ^) { }
}
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ USB_button;
private: System::IO::Ports::SerialPort^ arduino;
private: System::Windows::Forms::TextBox^ ArduinoOutputTextBox;
private: System::ComponentModel::IContainer^ components;
protected:
private:
/// <summary>
/// Required designer variable.
/// </summary>
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
Thread^ readThread = gcnew Thread(gcnew ThreadStart(Read));
this->components = (gcnew System::ComponentModel::Container());
this->USB_button = (gcnew System::Windows::Forms::Button());
this->arduino = (gcnew System::IO::Ports::SerialPort(this->components));
this->ArduinoOutputTextBox = (gcnew System::Windows::Forms::TextBox());
this->SuspendLayout();