.NET Logo
Welcome Guest Search | Active Topics | Members | Log In | Register

RFID::รบกวนช่วยอธิบายการรับค่าแล้วแสดงออกมาให้ดูหน่อยครับ Options · View
noob
Posted: Thursday, September 11, 2008 8:04:31 AM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

สืบเนื่องจาก กระทู้"ขอปรึกษาโปรเจค RFID หน่อยครับ"

ผมลองเอาโค้ดที่คุณpaedotnet อธิบายไปลองแล้วครับจากนั้นผมก็กำหนดให้แสดงค่านั้นออกมาทางtextbox แต่ปรากฎว่ามันไม่แสดงค่านั้นออกมา

จึงอยากขอ รบกวน ช่วย เขียนโค้ด(อย่างละเอียด) แสดงการอ่านค่าจากเครื่องRFID แล้วแสดงค่าออกทาง textbox ให้ดูหน่อยครับ

ขอรบกวนด้วยครับผมเพิ่งหัด C# สำหรับทำโปรเจคRFID ได้ไม่นานเองครับเลยไม่ค่อยเข้าใจ

ขอบคุณครับ

 

nuttaponp
Posted: Thursday, September 11, 2008 9:22:48 AM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62

ลองเข้าไปดูที่นี่ครับ

http://www.codeguru.com/csharp/.net/net_security/authentication/article.php/c12523

noob
Posted: Thursday, September 11, 2008 4:45:09 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

ขอบคุณครับแต่

ที่ให้มามันใช้ Phidgets ซึ่งมันเป็นการต่อตัวReader ผ่าน พอร์ต USB อ่ะครับผมเคยลองแล้วมานไม่Work

แต่ที่ผมใช้ ตัวREADER มันต่อผ่าน COM Port อ่าครับ

รบกวนช่วยสอนการ อ่านค่าในTag ผ่านCom Portแบบละเอียดด้วยคร้าฟ

ขอบคุณครับ

 

nuttaponp
Posted: Thursday, September 11, 2008 6:18:32 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62

ต้องขอโทษด้วยนะครับ เรื่อง RFID ผมไม่เคยทำมาก่อน แล้วก็ไม่มีตัว READER ให้ลองซะด้วย

พอดีผมไปเจอ source code อันนึง อาจจะใช้เป็นไกด์ไลน์ได้นะครับ เค้าใช้ของ Mifare (อันเดียวกับของคุณรึเปล่า)

ตามลิ้งข้างล่างนี้

http://upload.gangza.com/view.aspx?ItemID=1ebd8a0a-ef7f-dd11-b5cb-00e08127749e

paedotnet
Posted: Thursday, September 11, 2008 7:34:59 PM

Rank: มือเทพ
Groups: Member

Joined: 12/6/2007
Posts: 354
Location: bkk

ขอดูโค้ดที่ติดต่อและรับค่าจาก rfid หน่อยได้หรือเปล่าครับ



[With great power comes great responsibility]
noob
Posted: Friday, September 12, 2008 6:24:39 AM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

อย่าขอโทษ เลยครับคุณ nuttaponp แค่คุณมาช่วยตอบให้ผมก็ดีใจมากแล้วครับแล้วครับ

แล้วก็คุณ paedotnet ครับ คือว่าตอนนี้ คอม ผมเสียอ่ะครับ เดี๋ยวตอนเที่ยงจารีบ เอาโค้ดมา ให้ดูน่ะครับ ขอบคุณมากครับ ทั้ง2 ท่านที่

มาช่วยตอบคำถามมือใหม่อย่างผม

PS.มหาลัยผมมีแต่คนใช้ Java กับ C++ อ่ะครับ เข้าไปดูในกระทู้ของบอร์ดแล้วอยากไปอยู่ กทม.บ้างจังจะได้ไปขอความรู้จากพวกท่านๆบ้าง ^.^ บ้านนอกจริงๆเลยเรา เหอๆ

noob
Posted: Saturday, September 13, 2008 11:53:14 AM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

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

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

        private void Form1_Load(object sender, EventArgs e)
        {
            SerialPort port = new SerialPort();
            port.PortName = "COM5";
            port.Parity = Parity.None;
            port.BaudRate = 9600;
            port.DataBits = 8;
            port.Open();
            port.DataReceived += new SerialDataReceivedEventHandler(MyDataReceive);
            port.close();
           
        }
        public void MyDataReceive(object sender, SerialDataReceivedEventArgs e)
        {
            string data = DataReceive;
            textBox1.Text = data;
        }
    }
}

//ผมจะเขียนไห้ รับค่าจาก บัตรแล้วเก็บไว้ในตัวแปร  แล้วก็เอาค่าไปเป็น Primary Key ในDB ไว้ คิวรี่ออกมาอ่ะครับ

 

nuttaponp
Posted: Saturday, September 13, 2008 12:35:25 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62

 

ผมว่าน่าจะเป็นเพราะคุณปิด port ไปก่อน มันเลยไม่รอรับค่า
ลองแก้เป็นแบบนี้ดูนะครับ

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

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

        SerialPort port;

        private void Form1_Load(object sender, EventArgs e)
        {
            port = new SerialPort();
            port.PortName = "COM5";
            port.Parity = Parity.None;
            port.BaudRate = 9600;
            port.DataBits = 8;
            port.DataReceived += new SerialDataReceivedEventHandler(MyDataReceive);
            port.Open();
        }

        public void MyDataReceive(object sender, SerialDataReceivedEventArgs e)
        {
            string data = port.ReadExisting();
            textBox1.Text = data;
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            port.close();
        }

    }
}

 

noob
Posted: Monday, September 15, 2008 8:04:58 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

ขอโทษครับ คือว่า พอdebug แล้ว มันก็ผ่านอ่ะครับ แต่พอเอา [y9iเข้าไปใกล้แล้วมันก็เกิด error ดัง รูป อ่ะครับช่วยหน่อย ครับ

noob
Posted: Tuesday, September 16, 2008 3:57:53 AM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

ได้โปรด เถอะคร้าบ ช่วยด้วยครับ ผมทำตัวโปรแกรมเชื่อมกับDBเสร็จแล้วเหลือแค่อันนี้แหละครับที่ทำไม่เป็น แงๆ

 

nuttaponp
Posted: Tuesday, September 16, 2008 7:43:57 AM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62


คุณ noop ลองเพิ่มฟังชั่นการรับข้อมูลไปอีกนิดนะครับ
โค้ดหน้าตาเป็นประมาณนี้

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

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

        SerialPort port;

        private void DisplayData(string msg)                      //<--เพิ่มฟังชั่นนี้เข้าไป
        {
            textBox1.Invoke(new EventHandler(delegate
            {
                   textBox1.Text = msg;
            }));
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            port = new SerialPort();
            port.PortName = "COM5";
            port.Parity = Parity.None;
            port.BaudRate = 9600;
            port.DataBits = 8;
            port.DataReceived += new SerialDataReceivedEventHandler(MyDataReceive);
            port.Open();
        }

        public void MyDataReceive(object sender, SerialDataReceivedEventArgs e)
        {
            string data = port.ReadExisting();
            DisplayData(data);                                           //<--แก้ให้เป็นแบบนี้
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            port.close();
        }

    }
}

 

noob
Posted: Tuesday, September 16, 2008 11:24:28 AM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

ยังติดอยู่อีกนิดอ่ะครับ มานerror แบบนี้

ลืมบอกไปว่าค่าที่เครื่อง อ่านออกมามันจะเป็น ASCII อ่ะครับเอาไปลองกับHyperterminalแล้ว (เกี่ยวกันมั้ยครับ T_T)

nuttaponp
Posted: Tuesday, September 16, 2008 1:26:09 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62


เช็คดูนะครับว่าบนหัวของโปรแกรมมีตัวไหนขาดไปบ้าง เพิ่มให้ครบนะครับ

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

 

noob
Posted: Tuesday, September 16, 2008 2:29:26 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

ได้แล้วครับ คุณ nuttaponp แต่ค่าที่ได้มัน ขาดๆ เกินๆ ซะงั้นอ่ะครับ >.<

ด้านล่างนี้เป็นsource code ที่ผมเขียนครับ รบกวนช่วยดูให้หน่อยน่ะครับ(จาส่งพรุ่งนี้แล้ว งานอย่างอื่น เรียบร้อย แล้ว เหลือแต่อ่านค่านี่แระ เฮ้อๆเครียด ครับ)

PS.. ขอบคุณน่ะครับ คุณ nuttaponp นี่ถ้าผมอยู่ กทม คงพา คุณไปเลี้ยงขอบคุณแล้ว (ที่จิงจาไปแอบดูดความรู้ ^.^)

http://upload.gangza.com/view.aspx?ItemID=a06d6c03-c083-dd11-b5cb-00e08127749e

 

nuttaponp
Posted: Tuesday, September 16, 2008 3:36:27 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62


พอดีเครื่องผมใช้ Visual studio 2005 เลยเปิดไม่ได้น่ะครับ

ลองแก้บรรทัดที่รับข้อมูลตรง
  string data = port.ReadExisting();
ให้เป็น
  string data = port.ReadLine();
ลองดูนะครับถ้าไม่ได้ยังไงค่อยแก้ไขกันต่อไป ยังพอมีเวลาครับ


หน้าตาก็จะออกมาประมาณแบบนี้

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

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

        SerialPort port;

        private void DisplayData(string msg)
        {
            textBox1.Invoke(new EventHandler(delegate
            {
                textBox1.Text = msg;
            }));
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            port = new SerialPort();
            port.PortName = "COM5";
            port.Parity = Parity.None;
            port.BaudRate = 9600;
            port.DataBits = 8;
            port.DataReceived += new SerialDataReceivedEventHandler(MyDataReceive);
            port.Open();
        }

        public void MyDataReceive(object sender, SerialDataReceivedEventArgs e)
        {
            string data = port.ReadLine();                        //<--แก้ให้เป็นแบบนี้
            DisplayData(data);                                          
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            port.Close();
        }

    }
}
 

noob
Posted: Tuesday, September 16, 2008 6:05:42 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

สุดยอดดดครับ คุณ nuttaponp สำเร็จแล้วครับ อ่านค่าออกมาแล้ว ขอบคุณจริงๆครับ

ติดอยู่นิดเดียว ตรงที่ มีตัวอักษรที่ไม่ต้องการ เหลือ อยู่ด้านหน้า 1 ตัว หรือ ถ้าเอาบัตรไปอ่านค่าอีกครั้ง

มันจะมีเกิน มา 2 ตัวอักษรครับ แต่ไม่ขึ้น เกิน 2ตัวแล้วครับ จะตัดมันออกไงดีเหรอครับ

PS.. เย็นแล้วอย่าลืม ทานข้าวน่ะครับ คุณ nuttaponp

nuttaponp
Posted: Tuesday, September 16, 2008 7:03:24 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62


ผมไม่แน่ใจว่าจะใช้ได้หรือเปล่านะลองเปลี่ยนตรง  DisplayData(data); ให้เป็น
DisplayData(data.TrimStart((char)191).TrimStart((char)192));


จะได้แบบนี้ (แก้ที่เดียวนะครับ)

        public void MyDataReceive(object sender, SerialDataReceivedEventArgs e)
        {
            string data = port.ReadLine();                       
            DisplayData(data.TrimStart((char)191).TrimStart((char)192));                                         
        }


 

noob
Posted: Thursday, September 18, 2008 8:27:26 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 9/7/2008
Posts: 11
Location: HatYai

เย้ ขอบคุณครับ คุณ nuttaponp  ผ่าน แล้วววว ครับ  ^.^

ขอบคุณ มากๆๆเลยครับ ^.^

Users browsing this topic
Guest


Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Main Forum RSS : RSS

YAFVision Theme Created by Jaben Cargman (Tiny Gecko)
Powered by Yet Another Forum.net version 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.


Sponsored by