
نوشته شده توسط
nima_8m
ممنونم از پاسخ های کامل شما من یه عکس به پیوست فرستادم کامل توضیح داده که وزن ها به صورت AASCII ارسال میشه ترازوهای قدیمی به صورت باینری میفرستادن امیدوارم کمک کنه
ببنید این تکه برنامه کارتون راه میندازه!(البته که تست نکردم زحمت تست اش با خودتون)
using System;
using System.IO.Ports;
using System.Threading;
public class PortChat
{
static bool _continue;
static SerialPort _serialPort;
public static void Main()
{
string name;
string data;
Thread readThread = new Thread(Read);
_serialPort = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived)
try
{
if(!(_serialPort.IsOpen)){
_serialPort.Open();
readThread.Start();
}
}
catch (Exception ex)
{
MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
}
readThread.Join();
_serialPort.Close();
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(500);
_continue = false;
}
public static void Read()
{
while (_continue)
{
try
{
data = _serialPort.ReadLine();
Console.WriteLine(data);
}
catch (TimeoutException) { }
}
}
int getWeight(){
int weight =0 , i =0;
string tmp ;
foreach (string buf in data) {
i++;
tmp += buf.Substring(buf.IndexOf("+") + i , 1) ;
}
weight = Convert.ToInt32(buf.Trim(), 16) / 1000;
}
الان ین برنامه تبدیل شده برنامه وی فاکس هست که قرار داده بودید.
امیدوارم موفق باشید.