急救!!!c#串口编程!!!!!!!!!!!!!!!!!!!!!!!!
我之前是做web开发的对这个一无所知.具体要求如下:
我们的客户是一家食品供应商,他的生产线上要装一个软件.软件用来放出号码(例如2009/04/22 001A),喷码机接收这组数字,然后喷码, 每12个喷好码产品装箱.然后通过传感器,打印机条码打印条码.
哪位大虾能给我点思路.还有最好给我程序与S8喷码机通讯的程序例子.(串口是RS232的,打印机都是RS23的NOVA的)
小弟刚刚接触这个一窍不通阿!!!分我可以加到1000!!!拜托了!!!!!!!
------解决方案--------------------顶下,不懂
------解决方案--------------------帮顶..
------解决方案--------------------预知答案请参考楼下
------解决方案--------------------同样不懂。
------解决方案--------------------串口编程用自带的“组件->SerialPort”,可直接读取串口。
每发出12个号码,就让打印机打印一次。
------解决方案--------------------只用过条码机,没用过喷码机,帮顶
------解决方案--------------------例子挺多的,原来用vs2003的时候关于串口编程用的是vb6中的MSActive控件,通过引用得到。现在方便多了。例子网上一打一打的,无非就是波特率、校验位、串口号什么的,用于和系统进行通讯。
------解决方案--------------------
  [code=C#]
VS.NET2005中SerialPort控件操作详解(C#)  
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 SerialPorts
{
   public partial class frm_Main : Form
   {
       #region Public Enumerations
       public enum DataMode { Text, Hex }
       public enum LogMsgType { Incoming, Outgoing, Normal, Warning, Error };
       #endregion
       private Color[] LogMsgTypeColor = { Color.Orange, Color.Green, Color.Black, Color.Blue, Color.Red };
       //禁用和启用程序中各控件的状态
       private void EnableControls()
       {
           // 基于串口的打开与否,设置控件状态
           gbPortSettings.Enabled = !ComPort.IsOpen;
           btns.Enabled = btnstop.Enabled = txtSendData.Enabled = btnSend.Enabled = ComPort.IsOpen;
           if (ComPort.IsOpen) btnOpenPort.Text = "关闭串口";
           else btnOpenPort.Text = "打开串口";
       }
       //初始化组件的数据,为串口提供相关参数
       private void InitializeControlValues()
       {
           cmbParity.Items.Clear(); cmbParity.Items.AddRange(Enum.GetNames(typeof(Parity)));
           cmbStopBits.Items.Clear(); cmbStopBits.Items.AddRange(Enum.GetNames(typeof(StopBits)));
           cmbPortName.Items.Clear();
           foreach (string s in SerialPort.GetPortNames())
               cmbPortName.Items.Add(s);
           cmbPortName.Text = cmbPortName.Items[0].ToString();
           cmbParity.Text = cmbParity.Items[0].ToString();
           cmbStopBits.Text = cmbStopBits.Items[0].ToString();
           cmbDataBits.Text = cmbDataBits.Items[0].ToString();
           cmbParity.Text = cmbParity.Items[0].ToString();
           cmbBaudRate.Text = cmbBaudRate.Items[0].ToString();
           EnableControls();
       }
       //十六进制转换字节数组
       private byte[] HexStringToByteArray(string s)
       {
           s = s.Replace(" ", "");
           byte[] buffer = new byte[s.Length / 2];
           for (int i = 0; i < s.Length; i += 2)
               buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
           return buffer;
       }
       //字节数组转换十六进制