Giao tiếp với Agilent 34401A qua RS232

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • tuaki2311
    Thành viên chính thức
    • Sep 2008
    • 77

    #1

    Giao tiếp với Agilent 34401A qua RS232

    Mình làm việc với Agilent 34401A .Sử dụng C# viết phần mềm giao tiếp.Khi giao tiếp qua cổng GPIB thì không có vấn đề gì xảy ra.Nhưng khi sử dụng cổng RS232 thì các lệch mà có query lại đều báo lỗi.còn lệch không có quyre thì ko sao hết(ví dụ lệnh *RST *TST? thì không vấn đề gì còn *idn? là có lỗi liền) bạn nào làm về vấn đề này có thể giúp mình được không vậy.
  • tuaki2311
    Thành viên chính thức
    • Sep 2008
    • 77

    #2
    ah quên code của mình nè
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;

    namespace testCom
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    // serialPort1.WriteLine("*idn?" + (char)13);
    serialPort1.WriteLine("" + textBox1.Text + ""+(char)13);
    //serialPort1.WriteLine("MEAS:RES? 1MOHM, 0.001OHM" + (char)13);

    //string data = "";
    //byte num = (byte)serialPort1.BytesToRead;
    //for (int i = 0; i < num; i++)
    //{
    // data = data + (char)serialPort1.ReadByte();
    //}



    //textBox2.Text = data;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    serialPort1.Open();
    }

    private void button2_Click(object sender, EventArgs e)
    {
    serialPort1.DiscardInBuffer();
    serialPort1.DiscardOutBuffer();
    }
    }
    }

    Comment

    • kimhuynguyen
      Thành viên tích cực
      • Nov 2007
      • 211

      #3
      Bạn không nói rõ là lỗi như thế nào?

      Thông thường nên gởi cuối chuỗi các ký tự CrLf (0x0D0x0A) để báo hiệu kết thúc chuỗi.
      More friends more foods

      Comment

      • tuaki2311
        Thành viên chính thức
        • Sep 2008
        • 77

        #4
        Trên Agilent 34401 xuất hiện err .Giả sử khi mình gửi lệnh *idn? để lấy thông tin về phiên bản nhưng cũng báo err

        Comment

        • Paddy
          Thành viên tích cực
          • Jul 2008
          • 1268

          #5
          Nguyên văn bởi tuaki2311 Xem bài viết
          Trên Agilent 34401 xuất hiện err .Giả sử khi mình gửi lệnh *idn? để lấy thông tin về phiên bản nhưng cũng báo err
          bác coi thử link dưới coi.





          Ở khoảng giữa có exe file

          VISA COM and IVI-COM Driver: 34401 RS-232

          Comment

          • tuaki2311
            Thành viên chính thức
            • Sep 2008
            • 77

            #6
            Mình cũng coi rồi.nhưng mà ở đó dùng IVI-COM Driver nên cũng không tiện lắm.vì bản thân C# cũng có serial com sài được rồi mà.

            Comment

            • VNarmy
              Moderator
              • Feb 2007
              • 1413

              #7
              Trong labview có cái driver của máy này đấy. Bạn tải về dùng thử xem.
              AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
              Xem thêm tại Online Store ---> Click here
              Mob: 0982.083.106

              Comment

              • kimhuynguyen
                Thành viên tích cực
                • Nov 2007
                • 211

                #8
                Dùng Hyper Terminal trong Windows kết nối với máy Agilent.
                Thử gởi chuỗi *RST xem máy có đáp ứng không?
                Thử gởi chuỗi *IDN? xem máy có trả kết quả về có đúng không?

                Nhớ thiết lập tốc độ giao tiếp và các nghi thức giao tiếp phù hợp.
                More friends more foods

                Comment

                • tuaki2311
                  Thành viên chính thức
                  • Sep 2008
                  • 77

                  #9
                  Nguyên văn bởi kimhuynguyen Xem bài viết
                  Dùng Hyper Terminal trong Windows kết nối với máy Agilent.
                  Thử gởi chuỗi *RST xem máy có đáp ứng không?
                  Thử gởi chuỗi *IDN? xem máy có trả kết quả về có đúng không?

                  Nhớ thiết lập tốc độ giao tiếp và các nghi thức giao tiếp phù hợp.
                  Cảm ơn bạn nhé.Nhưng mình cũng dùng Hyper Terminal rồi kiểm tra các lệnh đều chạy bình thường cả.Còn khi viết bằng C# thì chạy các lệnh như là *RST *CLS CONFIG thì chạy bình thường.Còn các lệnh *IDN? MEAS nói chung là các lệnh cần trả lại thông tin thì báo err trên Agilent.Mã lỗi là -410.
                  Mình ghi là chuỗi lệnh mà mình truyền vào chắc phải thêm vào cái gì đó.Nhưng đọc hoài ko có chỗ nào viết cả.bế tắc quá đi

                  Comment

                  • tuaki2311
                    Thành viên chính thức
                    • Sep 2008
                    • 77

                    #10
                    Nguyên văn bởi VNarmy Xem bài viết
                    Trong labview có cái driver của máy này đấy. Bạn tải về dùng thử xem.
                    Mình tải rùi nhưng chương trình mẫu chẳng chạy gì cả.Trong khi dùng Hyper Terminal thì chạy bình thường

                    Comment

                    • kimhuynguyen
                      Thành viên tích cực
                      • Nov 2007
                      • 211

                      #11
                      Nguyên văn bởi tuaki2311 Xem bài viết
                      Cảm ơn bạn nhé.Nhưng mình cũng dùng Hyper Terminal rồi kiểm tra các lệnh đều chạy bình thường cả.Còn khi viết bằng C# thì chạy các lệnh như là *RST *CLS CONFIG thì chạy bình thường.Còn các lệnh *IDN? MEAS nói chung là các lệnh cần trả lại thông tin thì báo err trên Agilent.Mã lỗi là -410.
                      Mình ghi là chuỗi lệnh mà mình truyền vào chắc phải thêm vào cái gì đó.Nhưng đọc hoài ko có chỗ nào viết cả.bế tắc quá đi
                      Như đã nói ở trên, chuỗi bạn cần truyền có lẽ phải thêm vào 2 ký tự 0x13 và 0x10 vào cuối chuỗi (Hyper Terminal sẽ tự động thêm vào khi bạn gõ "Enter")

                      Chương trình của bạn chỉ thêm 0x10, có lẽ chưa đủ ?
                      More friends more foods

                      Comment

                      • tuaki2311
                        Thành viên chính thức
                        • Sep 2008
                        • 77

                        #12
                        Nguyên văn bởi kimhuynguyen Xem bài viết
                        Như đã nói ở trên, chuỗi bạn cần truyền có lẽ phải thêm vào 2 ký tự 0x13 và 0x10 vào cuối chuỗi (Hyper Terminal sẽ tự động thêm vào khi bạn gõ "Enter")

                        Chương trình của bạn chỉ thêm 0x10, có lẽ chưa đủ ?
                        Thêm cả 2 rùi mà vẫn không được ah.chắc điên thôi

                        Comment

                        • kimhuynguyen
                          Thành viên tích cực
                          • Nov 2007
                          • 211

                          #13
                          Các lệnh gởi tới Agilent có phân biệt chữ hoa và thường không?
                          Thử kiểm tra lại tài liệu xem!
                          More friends more foods

                          Comment

                          • tuaki2311
                            Thành viên chính thức
                            • Sep 2008
                            • 77

                            #14
                            Không phân biệt gì hết cả

                            Comment

                            • tuaki2311
                              Thành viên chính thức
                              • Sep 2008
                              • 77

                              #15
                              Mình đọc 1 đoạn code viết trong vb có dùng chr$(10) .viết kiểu đó khác chr(10) như nào vậy.Ah còn chr$(10) trong C# viết thế nào nhỉ

                              Comment

                              Về tác giả

                              Collapse

                              tuaki2311 Tìm hiểu thêm về tuaki2311

                              Bài viết mới nhất

                              Collapse

                              Đang tải...