Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 1 trên tổng số 7 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 66 kết quả

Đề tài: Rs232 và NetFx (c#)

  1. #1
    Ngày gia nhập
    08 2017
    Bài viết
    3,363

    Mặc định Rs232 và NetFx (c#)

    Thư viện (DLL) cho NetFx ít hơn cho NNLT khác.
    Có ai dùng nrComm NET chưa ?
    http://www.deepsoftware.com/nrcommnet/

    Visual C# Code:
    1. /* DemoRS232 (C) 2008 DeepSoftware.Com
    2.  * Serial Port Demo Project. nrComm NET component linrary.*/
    3.  
    4. using System;
    5. using System.Collections.Generic;
    6. using System.ComponentModel;
    7. using System.Drawing;
    8. using System.Text;
    9. using System.Windows.Forms;
    10. using System.Diagnostics;
    11. using DeepSoftware.nrCommLib;
    12.  
    13. namespace DemoRS232
    14. {
    15.     public partial class Form1 : Form
    16.     {
    17.         public Form1()
    18.         {
    19.             InitializeComponent();
    20.             for (int i = 0; i < buff.Length; i++) buff[i] = 0x34;
    21.             buff[buff.Length - 1] = 0x39;
    22.         }
    23.  
    24.         private void checkBox1_CheckedChanged(object sender, EventArgs e)
    25.         {
    26.             try
    27.             {
    28.                 nrComm1.Active = checkBox1.Checked;
    29.             }
    30.             catch (Exception err)
    31.             {
    32.                 MessageBox.Show(err.ToString(), "Open serial port error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    33.                 checkBox1.Checked = false;
    34.             }
    35.         }
    36.  
    37.         private void button1_Click(object sender, EventArgs e)
    38.         {
    39.             nrComm1.ConfigDialog();
    40.         }
    41.  
    42.         /*
    43.         delegate void AddTextCallback(string text); // thread safe access control implementation ...
    44.         private void AddText(string text)
    45.         {
    46.             if (textBox2.InvokeRequired)
    47.             {
    48.                 AddTextCallback d = new AddTextCallback(AddText);
    49.                 textBox2.Invoke(d, new object[] { text });
    50.             }
    51.             else
    52.             {
    53.                 textBox2.AppendText(text);
    54.             }
    55.  
    56.         }
    57.        
    58.         private void CallbackResult(IAsyncResult ir)
    59.         {
    60.             NrComm nrc = (NrComm)ir.AsyncState;
    61.             //nrc.BaseStream.EndWrite(ir);
    62.             int rez = nrc.BaseStream.EndRead(ir);
    63.             AddText(" async rd complete! " + ir.IsCompleted + " " + rez + "\r\n");
    64.         } */
    65.  
    66.         IAsyncResult res;
    67.         byte[] buff = new byte[2048];
    68.  
    69.         private void button4_Click(object sender, EventArgs e)
    70.         {
    71.             textBox2.AppendText(" res =" + res.IsCompleted + "\r\n");
    72.         }
    73.  
    74.         private void Form1_Load(object sender, EventArgs e)
    75.         {
    76.             nrComm1.Update();
    77.         }
    78.  
    79.         void AddListViewInfo(string sCapt, string sVal)
    80.         {
    81.             if (String.IsNullOrEmpty(sVal)) return;
    82.             listView1.Items.Add(sCapt).SubItems.Add(sVal);
    83.         }
    84.  
    85.  
    86.         //delegate void ChangeStatusBarCallback(SerialPortSignals Signals); // thread safe access control implementation ...
    87.         private void ChangeStatusBar(SerialPortSignals signals)
    88.         {
    89.             //if (statusStrip1.InvokeRequired)
    90.             //{
    91.             //    ChangeStatusBarCallback d = new ChangeStatusBarCallback(ChangeStatusBar);
    92.             //    statusStrip1.Invoke(d, new object[] { signals });
    93.             //}
    94.             //else
    95.             //{
    96.                 if ((signals & SerialPortSignals.CTS) == SerialPortSignals.CTS)
    97.                     lbCST.ForeColor = Color.Yellow;
    98.                 else
    99.                     lbCST.ForeColor = Color.Gray;
    100.  
    101.                 if ((signals & SerialPortSignals.DSR) == SerialPortSignals.DSR)
    102.                     lbDSR.ForeColor = Color.Yellow;
    103.                 else
    104.                     lbDSR.ForeColor = Color.Gray;
    105.  
    106.                 if ((signals & SerialPortSignals.RLSD) == SerialPortSignals.RLSD)
    107.                     lbRLSD.ForeColor = Color.Yellow;
    108.                 else
    109.                     lbRLSD.ForeColor = Color.Gray;
    110.  
    111.                 if ((signals & SerialPortSignals.Ring) == SerialPortSignals.Ring)
    112.                     lbRING.ForeColor = Color.Yellow;
    113.                 else
    114.                     lbRING.ForeColor = Color.Gray;
    115.  
    116.                 textBox2.AppendText("[" + signals.ToString() + "]\r\n");
    117.  
    118.                 //if (!nrComm1.Active)
    119.                 //{
    120.                 //    textBox2.AppendText("Serial port is closed]\r\n");
    121.                 //    checkBox1.Checked = false;
    122.                 //}
    123.             //}
    124.  
    125.         }
    126.         private void nrComm1_OnSignals_1(object Sender, SerialPortSignals Signals)
    127.         {
    128.             ChangeStatusBar(Signals);
    129.         }
    130.  
    131.         private void chDTR_CheckedChanged(object sender, EventArgs e)
    132.         {
    133.             nrComm1.SetStateDTR(chDTR.Checked);
    134.         }
    135.  
    136.         private void chRTS_CheckedChanged(object sender, EventArgs e)
    137.         {
    138.             nrComm1.SetStateRTS(chRTS.Checked);
    139.         }
    140.  
    141.         private void nrDeviceBox1_SelectedIndexChanged(object sender, EventArgs e)
    142.         {
    143.             listView1.Items.Clear();
    144.             if(nrComm1.DeviceIndex >= 0)
    145.             {
    146.                 NrDevice dev = nrComm1[nrComm1.DeviceIndex];
    147.                 AddListViewInfo("Friendly Name", dev.NameFriendly);
    148.                 AddListViewInfo("Description", dev.Description);
    149.                 AddListViewInfo("Name DOS", dev.NameDeviceDos);
    150.                 AddListViewInfo("Manufacturer", dev.Manufacturer);
    151.                 AddListViewInfo("Service", dev.Service);
    152.                 AddListViewInfo("InstanceID", dev.InstanceId);
    153.                 AddListViewInfo("DevInst", dev.DevInst.ToString("X"));
    154.             }
    155.            
    156.         }
    157.  
    158.         private void checkBox2_Click(object sender, EventArgs e)
    159.         {
    160.             if (checkBox2.Checked)
    161.                 nrComm1.EnumPorts = EnumPortsType.FullInfo;
    162.             else
    163.                 nrComm1.EnumPorts = EnumPortsType.FullPresent;
    164.             nrComm1.Update();
    165.             nrDeviceBox1.DroppedDown = true;
    166.         }
    167.  
    168.         private void nrComm1_OnClose(object Sender)
    169.         {
    170.             //ChangeStatusBar(0);
    171.             textBox2.AppendText("!!!!!!!!! Serial port is closed !!!!!!!! \r\n");
    172.             checkBox1.Checked = false;
    173.         }
    174.  
    175.         byte[] dd = new byte[10];
    176.  
    177.         void AsynHandler(IAsyncResult ar)
    178.         {
    179.             try
    180.             {
    181.                 int s = nrComm1.BaseStream.EndRead(ar);
    182.                 Debug.WriteLine("EndREAD= " + s);
    183.             }
    184.             catch (Exception error)
    185.             {
    186.                 Debug.WriteLine("EndREAD ERROR " + error.Message);
    187.             }
    188.         }
    189.  
    190.         private void button2_Click(object sender, EventArgs e)
    191.         {
    192.             Debug.WriteLine("Begin read ... ");
    193.             nrComm1.BaseStream.BeginRead(dd, 0, 1, new AsyncCallback(AsynHandler), null);
    194.         }
    195.  
    196.         private void nrComm1_OnDataSent(object sender, EventArgs e)
    197.         {
    198.             Debug.WriteLine("Buffer is empty ... ");
    199.         }
    200.     }
    201. }

    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    11 2013
    Bài viết
    512

    Có sẵn SerialPort trong System.IO.Ports rồi nên người ta sẽ dùng chứ không phát minh lại bánh xe.
    Vậy nó sẽ ít.
    Đã được chỉnh sửa lần cuối bởi Duong_act : 05-11-2017 lúc 04:49 PM.

  3. #3
    Ngày gia nhập
    08 2017
    Bài viết
    3,363

    Tôi biết nó có sẵn.
    Tôi biết nhiều về Rs232

    Trong Rs232 làm sao đọc được từng packet ?
    Source code của nrComm (nguyên gốc)
    Attached Files Attached Files

  4. #4
    Ngày gia nhập
    11 2013
    Bài viết
    512

    RS232 (trừ các giao thức giả lập) sẽ truyền theo từng bit nối tiếp trên RX và TX.
    Trong Net đã có 3 hàm đọc là :
    Read-> đọc n byte.
    ReadLine-> đọc khi phát hiện NewLine (return string)
    ReadExisting-> đọc toàn bộ (return string)
    chắc là đủ để đáp ứng mọi kiểu đọc.

  5. #5
    Ngày gia nhập
    08 2017
    Bài viết
    3,363

    Tôi có biết những gì Duong nói, tôi có luôn cả source code của nrComm (và vài thư viện khác) cho Rs232 dùng cho NNLT khác NetFX.

  6. #6
    Ngày gia nhập
    11 2013
    Bài viết
    512

    Mặc định Rs232 và NetFx (c#)

    NrComm thì chưa dùng bao giờ. Qua C++ dùng QT nên ăn sẵn QSerialPort.

  7. #7
    Ngày gia nhập
    08 2017
    Bài viết
    3,363

    NrComm Net thì đó.
    Còn for Delphi
    http://www.deepsoftware.com/nrcomm/

    , for C++ thì hàng đống
    Thử gõ tìm trên Google thì biết

  8. #8
    Ngày gia nhập
    08 2017
    Bài viết
    3,363

    Practical .NET 2.0 Networking Projects
    Copyright © 2007 by Wei-Meng Lee

    là tài liệu tốt cho NetFx, cho LTV làm việc với networking

  9. #9
    Ngày gia nhập
    08 2017
    Bài viết
    3,363

    C# làm việc với thiết bị ngoại vi, cổng kiếc không trội hơn NNLT khác

  10. #10
    Ngày gia nhập
    08 2017
    Bài viết
    3,363

    Chuẩn bị cho yêu cầu nâng cấp CT có làm việc với thiết bị ngoại vi, cổng COM
    Hy vọng sẽ có nhận định khác, c# không thua kém NNLT khác !
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn