Thông báo

Collapse
No announcement yet.

Help!pc không nhận kí tự từ pic dùng vc++ 2010

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Help!pc không nhận kí tự từ pic dùng vc++ 2010

    E đang làm đề tài rfid + pic + giao tiếp pc!
    e có tham khảo chương trình terminal v1.9b thì ok , e đọc được id của thẻ task gửi từ pic lên ,sau đó gửi lên pc, khi em bắt tay vào làm 1 chương trình theo tut của bác Ngô Hải Bắc thì không nhận được ( không hiển thị trên edit box),e cũng lấy thử chương trình của bác Ngô Hải Bắc như kiểm tra không được ,vd e cho thẻ task vào thì trên terminal đọc được ID là 1480197118252# !
    code của e trên vc đây ,mong các bac giúp e với, e đang cần gấp thanks ,a e dùng lap nên dùng 1 mach chuyển đổi từ usb sang com nhe, mặc định com của e là com 1

    void Crfid2Dlg::setting(void)
    {
    if( m_mscomm1.get_PortOpen())
    m_mscomm1.put_PortOpen(false);
    CString strBitRate ("9600");
    CString strParity ("none");
    CString strDataBit ("8");
    CString strStopBit ("1");
    CString strSetting;
    strSetting.Format(L"%s,%c,%s,%s",strBitRate,strPar ity[1],strDataBit,strStopBit);
    m_mscomm1.put_Settings(strSetting); //"9600,N,8,1");
    m_mscomm1.put_RThreshold(1);
    m_mscomm1.put_InputLen(1);
    m_mscomm1.put_InBufferSize(4096);
    m_mscomm1.put_InputMode(0);
    m_mscomm1.put_PortOpen(true);
    }

    void Crfid2Dlg::OnCommMscomm1()
    {
    // TODO: Add your message handler code here
    UpdateData(true);
    CString tam;
    if (m_mscomm1.get_CommEvent()==2)
    {
    VARIANT data = m_mscomm1.get_Input();
    m_recvice = (CString)data.bstrVal;
    }
    UpdateData(false);
    }

  • #2
    Cái tut anh NGÔ HẢI BẮC làm trên vc6 thì phải , đây là code mình viết cho vc2008 , chắc 2010 chạy dc.

    void CPlateDlg::OnCommMscomm1()
    {
    // TODO: Add your message handler code here
    UpdateData(true);
    // count+=1;
    VARIANT data;
    CString kt;
    if(m_mscomm.get_CommEvent()==2)
    {
    data =m_mscomm.get_Input();
    m_nhan= (CString)data.bstrVal;
    kt=(CString)data.bstrVal;
    }
    if(kt=='B')
    {
    //GrabPicture();
    Recognition();
    }
    UpdateData(false);
    }

    void CPlateDlg::Setting(void)
    {
    if (m_mscomm.get_PortOpen())
    m_mscomm.put_PortOpen(false);
    //CString strsetting;
    //strsetting.Format(_T("%s,%c,%s,%s"),"9600",'N',"8" ,"1");
    //m_mscomm.put_Settings(strsetting);

    m_mscomm.put_CommPort(4);
    m_mscomm.put_RThreshold(1);
    m_mscomm.put_InputLen(1); //Moi lan doc 1 ky tu
    m_mscomm.put_InputMode(0); //Text
    m_mscomm.put_OutBufferSize(1024); //Bo dem nhan
    m_mscomm.put_PortOpen(true); //Mo cong
    }

    Comment


    • #3
      mình vừa thửa code của bang xong , nhưng vẫn kg chạy được, mình ngỉ code bạn và mình gần giống nhau !! bạn cho mình mượn nguyên project thử xem! hjx đây là code pic :

      #include <16F877A.h>
      #device *=16
      #include <stdlib.h>
      #include <stdio.h>
      #include <string.h>
      #include <KhaiBaoTGhi_16F877A.h>
      #fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NODEBUG,NOLVP,NOCPD, NOWRT,NOPUT
      #use delay(clock=20000000)
      #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
      #include <em4095_chanh.c> //READER IC
      #include <em4102.c> // TAG
      #define led1 RA0
      #define led2 RA1
      #define led3 RA2
      int8 code[5];


      void main()
      {

      int32 tagNum;
      int8 customerCode;
      int8 msg[32];
      ENABLE_INTERRUPTS(GLOBAL);
      ENABLE_INTERRUPTS(INT_RDA);

      rf_init(); //initialization
      rf_powerup();

      TRISA=0;
      TRISD=0;
      ra0=1;
      led1=1;led2=0;led3=0;

      while(1)
      {

      if(read_4102(code)) //read the code
      {
      customerCode = code[0];
      printf("%u%u%u%u%u#",customerCode,code[1],code[2],code[3],code[4]);

      led2=1;
      led3=0;
      delay_ms(500);
      }
      else led2=0;led3=1;

      }
      }

      Có bác nào viết trên vc++ 2010 cho mình xin với!~1,mình vừa dùng ctr của anh NHB và terminal truyền nhận với nhau (thông qua com ao thì ok ,nhưng khi dùng của anh NHB để nhận chuổi từ pic thì không hiển thị, Các bác giúp với!!!!!!!!!!!!!
      Last edited by loiquang89; 04-06-2012, 19:55.

      Comment


      • #4
        các bac giúp e với!!!!!!!!!!!!!!

        Comment


        • #5
          Mấy ct của bác Ngô Hải bắc về VC++ mình cũng đã làm thử,lỗi tùm lum hết nên quay lại với VB6 cho lành lặn,VB6 cũng đủ dùng rồi.
          THƯỜNG XUYÊN MỞ CÁC CHUYÊN ĐỀ THIẾT KẾ ỨNG DỤNG BẰNG PIC - AVR
          blog:

          Comment


          • #6
            bác nào pro vc++ 2010 chi mình với! mình đang cần gấp gấp ,vì xla mình làm trên c++ rui hhjx!!!!!!!!!!!!!!!!!!!!!!!!!!!

            Comment


            • #7
              if( m_mscomm.GetPortOpen())
              m_mscomm.SetPortOpen(false);
              // Setting comport
              m_mscomm.SetCommPort(1);
              // Setting Handshaking
              m_mscomm.SetHandshaking(0);
              CString strBitRate = "9600";
              CString strParity = "None";
              CString strDataBit = "8";
              CString strStopBit = "1";
              CString strSetting;
              strSetting.Format("%s,%c,%s,%s",strBitRate,strPari ty[1],strDataBit,strStopBit);
              m_mscomm.SetSettings(strSetting);//"9600,N,8,1");
              m_mscomm.SetRThreshold(1); //
              // set for input direction
              m_mscomm.SetInputLen(1);
              m_mscomm.SetInBufferSize(1024);
              m_mscomm.SetInputMode(0);
              m_mscomm.SetOutBufferSize(1024);
              m_mscomm.SetPortOpen(true);
              Bạn thử với đoạn khởi tạo này xem, chỗ setcommport bạn điền vào cổng COM tuơng ứng với cổng COM trên máy bạn.

              Comment


              • #8
                mình thử của bạn rùi trimem ,nhưng vẫn không được
                đây là code vb đã chay ok! nhưng mình viết trên c ,àh mình dùng laptop nên dùng pl2303 chuyển đổi usb sang com nhé!

                Public Class Form1
                Dim data As String

                Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                SerialPort1.PortName = "com1"
                End Sub
                Private Sub Serialport1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
                Dim tam As String
                System.Threading.Thread.Sleep(300)
                tam = tam + (SerialPort1.ReadExisting)
                If tam(Len(tam) - 1) = "#" Then
                Data = Replace(tam, "#", " ").Trim
                tam = ""
                End If
                Me.Invoke(New EventHandler(AddressOf displaytext))

                End Sub
                Private Sub displaytext(ByVal sender As System.Object, ByVal e As System.EventArgs)
                TextBox1.Text = Data
                TextBox2.Text = Now.Hour & ":" & Now.Minute & ":" & Now.Second

                End Sub

                Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
                Me.Close()
                End Sub

                Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                If Not SerialPort1.IsOpen Then
                SerialPort1.Open()
                Label3.Text = "Ready to read"
                End If
                End Sub

                Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
                If SerialPort1.IsOpen Then
                SerialPort1.Close()
                Label3.Text = "Com 1 is closed"
                End If
                End Sub
                End Class
                Last edited by loiquang89; 05-06-2012, 11:44.

                Comment


                • #9
                  ok e đã giải quyết dc vấn đề! nhưng hiển thị trên editbox chỉ đúng 1 kí tư đầu tiền, mấy kí tự sau toàn la o vuông hoăc chấm hỏi .mấy bác giúp e phần này voi!

                  Comment


                  • #10
                    Nguyên văn bởi loiquang89 Xem bài viết
                    ok e đã giải quyết dc vấn đề! nhưng hiển thị trên editbox chỉ đúng 1 kí tư đầu tiền, mấy kí tự sau toàn la o vuông hoăc chấm hỏi .mấy bác giúp e phần này voi!
                    Cho xem cái screen shot của bác tí nào,nói vậy ai mà hiểu được
                    THƯỜNG XUYÊN MỞ CÁC CHUYÊN ĐỀ THIẾT KẾ ỨNG DỤNG BẰNG PIC - AVR
                    blog:

                    Comment


                    • #11
                      Click image for larger version

Name:	hoi ki tu sai.jpg
Views:	1
Size:	80.5 KB
ID:	1362647 hinh ne bác , e dùng chương trình terminal nhận chuổi 244# từ vdk thì ok, dùng thử ch bác NBH thì chỉ nhận dc 1 kí tự 2 cò lại là dấu vuông hay chấm hỏi ,code nhận như phần trên
                      void Crfid2Dlg::OnCommMscomm1()
                      {
                      // TODO: Add your message handler code here
                      UpdateData(true);
                      CString tam;
                      if (m_mscomm1.get_CommEvent()==2)
                      {
                      VARIANT data = m_mscomm1.get_Input();
                      m_recvice = (CString)data.bstrVal;
                      }
                      UpdateData(false);
                      }

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X