CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3
  1. #1
    Join Date
    May 2011
    Posts
    3

    visual studio c++ windows form application

    Hello.
    I have a problem with windows form application. I try to write a code where i read continuous values from a serial, and that values i put in a text box. The program should do that until I press another button. I thought I should use theards... when I run this code, the program read my values corect but I can't press another button because all are blocked. Anybody has any ideea how shoud I do this program work?or if I should use something else,not threads? I put the code that I wrote below.
    Thanks a lot.


    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:


    delegate void TextboxCallback(System::Object ^obj);



    Form1(void)
    {
    InitializeComponent();
    //
    //TODO: Add the constructor code here
    //
    newThread1 = gcnew Thread(gcnew ParameterizedThreadStart(&ThreadProc1 ));
    th1 = gcnew Thread(gcnew ThreadStart(this, &Form1::th1Method));

    }


    protected:
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }
    private: System::Windows::Forms::Button^ button1;
    protected:
    private: System::Windows::Forms::TextBox^ textBox1;
    private: System::IO::Ports::SerialPort^ serialPort1;
    private: System:iagnostics::Process^ process1;

    private: System::ComponentModel::IContainer^ components;
    Thread ^th1;
    private: System::Windows::Forms::Button^ button2;

    Thread ^newThread1;
    //private: System::Threading::Thread^ serialread;

    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)
    {
    this->components = (gcnew System::ComponentModel::Container());
    this->button1 = (gcnew System::Windows::Forms::Button());
    this->textBox1 = (gcnew System::Windows::Forms::TextBox());
    this->serialPort1 = (gcnew System::IO::Ports::SerialPort(this->components));
    this->button2 = (gcnew System::Windows::Forms::Button());

    this->SuspendLayout();
    //
    // button1
    //
    this->button1->Location = System:rawing::Point(197, 12);
    this->button1->Name = L"button1";
    this->button1->Size = System:rawing::Size(75, 23);
    this->button1->TabIndex = 0;
    this->button1->Text = L"button1";
    this->button1->UseVisualStyleBackColor = true;
    this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    //
    // textBox1
    //
    this->textBox1->Location = System:rawing::Point(68, 14);
    this->textBox1->Name = L"textBox1";
    this->textBox1->Size = System:rawing::Size(100, 20);
    this->textBox1->TabIndex = 1;
    //
    // button2
    //
    this->button2->Location = System:rawing::Point(116, 109);
    this->button2->Name = L"button2";
    this->button2->Size = System:rawing::Size(75, 23);
    this->button2->TabIndex = 2;
    this->button2->Text = L"button2";
    this->button2->UseVisualStyleBackColor = true;
    this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
    //
    // Form1
    //
    this->AutoScaleDimensions = System:rawing::SizeF(6, 13);
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    this->ClientSize = System:rawing::Size(735, 293);
    this->Controls->Add(this->button2);
    this->Controls->Add(this->textBox1);
    this->Controls->Add(this->button1);
    this->Name = L"Form1";
    this->Text = L"Form1";
    this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
    this->FormClosing += gcnew System::Windows::Forms::FormClosingEventHandler(this, &Form1::Form1_FormClosing);
    this->ResumeLayout(false);
    this->PerformLayout();

    }
    #pragma endregion

    private: System::Void th1Method()
    {
    Byte data;



    }
    static void SafeThread1(System::Object ^obj)
    {

    Form1 ^ob = (Form1^) obj;
    if(ob->textBox1->InvokeRequired)
    {
    TextboxCallback ^d = gcnew TextboxCallback(SafeThread1);
    ob->Invoke(d,gcnew array<System::Object^>{ob});
    }
    else
    {


    do
    {


    ob->textBox1->Text=ob->serialPort1->ReadLine();
    Thread::Sleep( 80 );



    }while(ob->serialPort1->IsOpen);
    }

    }


    static void ThreadProc1(System::Object ^obj)
    {

    SafeThread1(obj);

    }

    //
    private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
    this->serialPort1->BaudRate = 9600;
    this->serialPort1->DataBits = 8;
    this->serialPort1->PortName = "COM1";
    this->serialPort1->StopBits = System::IO::Ports::StopBits::One;
    //this->serialPort1->ReadTimeout = 10;
    this->serialPort1->Open();
    // System::Threading::ThreadStart^ myThreadDelegate = gcnew System::Threading::ThreadStart(this, &Licenta02::Form1::readSerial);


    }
    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
    String^ a;
    double b=3.4;
    // if(this->serialread->IsAlive)
    // this->serialread->Abort();
    // else
    // this->serialread->Start();
    // this->demoThread = gcnew Thread(gcnew ThreadStart(this,&Form1::ThreadProcSafe));
    // this->textBox1->Text=this->serialPort1->ReadLine();
    // this->demoThread->Start();
    // this->th1->Start();
    // this->newThread1->IsBackground=true;
    // newThread1->Start(this);
    a=""+b;
    this->textBox1->Text=a;


    }
    private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) {
    this->serialPort1->Close();
    }



    private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
    this->serialPort1->Close();
    }
    };
    }

  2. #2
    VictorN's Avatar
    VictorN is offline Super Moderator Power Poster
    Join Date
    Jan 2003
    Location
    Hanover Germany
    Posts
    20,395

    Re: visual studio c++ windows form application

    The Windows Form problems are discussed in the Managed C++/CLI forum.
    This one is for native VIsual C++

    Besides, you should use Code tags while posting code snippets. See Announcement: Before you post....
    Victor Nijegorodov

  3. #3
    VictorN's Avatar
    VictorN is offline Super Moderator Power Poster
    Join Date
    Jan 2003
    Location
    Hanover Germany
    Posts
    20,395

    Re: visual studio c++ windows form application

    Dear meenaa,
    please stop spamming!
    Otherwise you'll be banned!
    Victor Nijegorodov

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured