Добрый день. Есть код на С# (
http://www.cyberforum.ru/kip-sensors/thread771426-page3.html). Нужно перевести на делфи:
public sealed class Init: MainInit
{
public static SerialPort mySerialPort = new SerialPort();
public static string seriya = "";
public static string nomer = "";
public static string karta = "";
public static string karta16;
public void PortProperties()
{
if (mySerialPort.IsOpen == false)
{
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.ReadTimeout = 200;
mySerialPort.PortName = "COM10";
try
{
mySerialPort.Open();
}
catch (System.IO.IOException)
{
//throw new Exception("Устройство не подключено");
}
Thread t = new Thread(Opros);
t.Start();
t.IsBackground = true;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(mySerialPort_DataReceived);
OnPick += OnPicked;
}
}
static void Opros()
{
var data_for_controller1 = new byte
[5] { 242, 255, 1, 2, 3 };
var data_for_controller = new byte
[7] { 242, 255, 3, 1, 0, 26, 24 };
if (mySerialPort.IsOpen)
mySerialPort.Write(data_for_controller, 0, 7);
while (mySerialPort.IsOpen)
{
try
{
mySerialPort.Write(data_for_controller1, 0, 5);
}
catch(System.IO.IOException)
{
}
}
}
public static void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] buffer = new byte[mySerialPort.BytesToRead];
mySerialPort.Read(buffer, 0, buffer.Length);
for (int i = 2; i < buffer.Length; i = i + 8)
{
if (buffer[i] == 8)
{
int nomk = (buffer[i + 5] >> 1) + (buffer[i + 6] & 1) * 128;
int ss = (buffer[i + 6] >> 1) + (buffer[i + 7] & 1) * 128;
nomk = nomk + ss * 256;
int serk = (buffer[i + 7] >> 1) + (buffer[i + 8] & 1) * 128;
karta = serk.ToString() + nomk.ToString();
karta16 = buffer[i + 5].ToString() + buffer[i + 6].ToString() + buffer[i + 7].ToString() + buffer[i + 8].ToString();
seriya = serk.ToString();
nomer = nomk.ToString();
Thread.Sleep(200);
OnRaiseCustomEvent(new EventArgs());
}
}
if (mySerialPort.IsOpen)
{
mySerialPort.DiscardOutBuffer();
}
}
public static event EventHandler<EventArgs> OnPick;
public static void OnRaiseCustomEvent(EventArgs e)
{
EventHandler<EventArgs> handler = OnPick;
if (handler != null)
{
handler(null, e);
}
}
void OnPicked(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
SendKeys.SendWait("{BS}");
}
SendKeys.SendWait(seriya + " " + nomer);
}
}
}