PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp cổng COM và LPT (http://www.picvietnam.com/forum/forumdisplay.php?f=44)
-   -   Tài liệu giao tiếp RS232 bằng C# (http://www.picvietnam.com/forum/showthread.php?t=2121)

baybalinh 14-03-2008 01:51 PM

Tài liệu giao tiếp RS232 bằng C#
 
Có bác nào có tài liệu giao tiếp RS232 dùng C# không? Em nghe nói C# dùng mạnh lắm mà chưa tìm được tài liệu hix hix.
Bác nào có share em với. Thanks các bác nhiều nhiều >:D<

bien_van_khat 14-03-2008 09:44 PM

Trích:

Nguyên văn bởi baybalinh (Post 14884)
Có bác nào có tài liệu giao tiếp RS232 dùng C# không? Em nghe nói C# dùng mạnh lắm mà chưa tìm được tài liệu hix hix.
Bác nào có share em với. Thanks các bác nhiều nhiều >:D<

Bạn dùng control SerialPort trong VisualStudio 2005 hoặc VisualStudio 2008 (nhóm components trong toolbox). Code mẫu và tài liệu bạn tham khảo từ MSDN nhé.

thaithienanh 14-03-2008 10:47 PM

Trong này đã có tut dùng .NET rồi, bạn lấy tut đó về xem cũng tương tự thôi :).

baybalinh 15-03-2008 11:55 PM

Các bác có thể nói cụ thể hơn k ạ?? Code mẫu và tuto em vào phần nào để xem ạ?? Còn tập lệnh dùng cho giao tiếp máy tính tra trong thư viện nào? Em còn gá lằm các bác ơi :-s

thaithienanh 16-03-2008 01:20 AM

Trích:

Nguyên văn bởi baybalinh (Post 14928)
Các bác có thể nói cụ thể hơn k ạ?? Code mẫu và tuto em vào phần nào để xem ạ?? Còn tập lệnh dùng cho giao tiếp máy tính tra trong thư viện nào? Em còn gá lằm các bác ơi :-s

http://www.picvietnam.com/forum/showthread.php?t=542
http://dientuvietnam.net/forums/showthread.php?t=3065
http://dientuvietnam.net/forums/showthread.php?t=3046

Chúc vui :).

baybalinh 16-03-2008 11:34 PM

hehe thanks mấy bác nhìu ^^, ít nhất bây giờ em cũng biết được bắt đầu từ đâu .

nguyencuongevn 28-03-2008 11:18 AM

cho em hỏi R232 và R422,R485 có khác nhau nhiều không?

nguyencuongevn 28-03-2008 11:19 AM

ai có tài liệu về các thiết bị tự động hoá ko?post cho mình với?thanhks

baybalinh 23-04-2008 10:21 AM

Các bác xem code của em bị lỗi gì với
 
1 Attachment(s)
Em có làm 1 ví dụ từ nguồn http://www.codeproject.com/KB/system...hreadSafe.aspx giao tiếp RS232 dùng C#.
Nó báo lỗi thế này:
Error 1 The name 'port' does not exist in the current context C:\Documents and Settings\KkK\My Documents\Visual Studio 2005\Projects\vd codeproject Csharp\vd codeproject Csharp\Form1.cs

Em gửi kèm project em làm. Các bác xem hộ em sai ở đâu với ạ.
Em cảm ơn các bác nhiều.

Đây là code của em
Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;


namespace RS232
{
    public partial class fclsRS232Tester : Form
    {
        string InputData = String.Empty;
        // This delegate enables asynchronous calls for setting

        // the text property on a TextBox control:

        delegate void SetTextCallback(string text);
        public fclsRS232Tester()
        {
            InitializeComponent();
            // Nice methods to browse all available ports:

            string[] ports = SerialPort.GetPortNames();

            // Add all port names to the combo box:

            foreach (string port in ports)
            {
                cmbComSelect.Items.Add(port);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (port.IsOpen) port.WriteLine(txtOut.Text);
            else MessageBox.Show("Serial port is closed!",
                                "RS232 tester",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            txtOut.Clear();
        }

        private void cmbComSelect_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (port.IsOpen) port.Close();
            port.PortName = cmbComSelect.SelectedItem.ToString();
            stsStatus.Text = port.PortName + ": 9600,8N1";

            // try to open the selected port:

            try
            {
                port.Open();
            }
            // give a message, if the port is not available:

            catch
            {
                MessageBox.Show("Serial port " + port.PortName +
                  " cannot be opened!", "RS232 tester",
                  MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cmbComSelect.SelectedText = "";
                stsStatus.Text = "Select serial port!";
            }
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            txtIn.Clear();
        }

        private void txtIn_TextChanged(object sender, EventArgs e)
        {

        }

        private void stsStatus_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }
        private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
        {
            InputData = port.ReadExisting();
            if (InputData != String.Empty)
            {
                //            txtIn.Text = InputData;

                // because of different threads this

                // does not work properly !!


                SetText(InputData);
            }
        }
        private void SetText(string text)
        {
            // InvokeRequired required compares the thread ID of the

            // calling thread to the thread ID of the creating thread.

            // If these threads are different, it returns true.

            if (this.txtIn.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
            }
            else this.txtIn.Text += text;
        }
    }
}


baybalinh 23-04-2008 10:25 AM

Hix em copy qua forum sao mấy ô spacing nó tụt ra đầu dòng hết vậy, các bác chịu khó xem trong project em gửi vậy nhé. Các bác thông cảm em còn gà lắm :p

baybalinh 24-04-2008 10:22 PM

hix k có ai giúp em à :-s

namqn 24-04-2008 10:30 PM

port của bạn là object loại nào? Bạn chỉ có ports có kiểu string[] trong code thôi.

Thân,

baybalinh 25-04-2008 11:19 AM

ports kiểu string em dùng làm biến đầu vào cho hàm foreach ( Em cũng k biết rõ tác dụng của hàm này lắm, em mới tập làm lại ví dụ trong trang em nói ở trên thôi mà :p )
Lỗi không phải ở name ports kiểu string mà ở các hàm port.open, port.close v.v.. . name ports có "s" mà, trong khi "port" báo lỗi đâu có chữ "s" đâu .
Em đã thử gỡ bộ visual studio cài lại vẫn báo lỗi như vậy. Bác nào thử chạy project em attach ở trên xem sao. Plzz help me. Hix đau đầu với nó quá

namqn 25-04-2008 08:11 PM

Trích:

Nguyên văn bởi baybalinh (Post 15776)
ports kiểu string em dùng làm biến đầu vào cho hàm foreach ( Em cũng k biết rõ tác dụng của hàm này lắm, em mới tập làm lại ví dụ trong trang em nói ở trên thôi mà :p )
Lỗi không phải ở name ports kiểu string mà ở các hàm port.open, port.close v.v.. . name ports có "s" mà, trong khi "port" báo lỗi đâu có chữ "s" đâu .
Em đã thử gỡ bộ visual studio cài lại vẫn báo lỗi như vậy. Bác nào thử chạy project em attach ở trên xem sao. Plzz help me. Hix đau đầu với nó quá

Bạn không hiểu ý câu hỏi của tôi. Tôi hỏi port của bạn là object loại nào vì tôi không thấy nó được khai báo, hay khởi tạo. Thông báo lỗi của trình biên dịch như sau:
"Tên 'port' không tồn tại trong ngữ cảnh hiện hành", tức là bạn định dùng một object tên là 'port', mà trình biên dịch không biết nó là loại object gì, khai báo ở đâu, khởi tạo ở đâu.

Cú pháp của foreach được viết đúng, nghĩa là với mỗi phần tử của mảng ports[] (có được từ việc gọi hàm SerialPort.GetPortNames()) thì gán nó cho biến port, và dùng biến này để thêm phần tử vào combo box cmbComSelect. Theo tôi, vấn đề nằm ở chỗ port được khai báo trong hàm fclsRS232Tester(), và được dùng trong một số hàm khác. Đây chỉ là phỏng đoán của tôi, vì tôi không dùng C# (tôi từng viết code Java cách đây khoảng 10 năm, bây giờ chỉ còn nhớ một vài khái niệm trong OOP thôi).

Thân,

baybalinh 26-04-2008 12:47 AM

Bác làm ơn giải thích rõ hơn cho em được không ạ. Tại cái này là vd đầu tiên em mò tới C# cũng như vộ visual std 2005. :p
Em thấy biến port chỉ có trong hàm foreach thôi đúng không bác. Em đâu thấy biến port trong hàm nào khác nữa đâu.
Với lại khi báo lỗi, em thấy nó có gạch chân mấy hàm port.Open, port.Close v.v.... nên e nghĩ k biết có fải lõi ở mấy hàm này k


Múi giờ GMT. Hiện tại là 10:07 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam