加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何将Turbo Pascal for Win32的I / O端口访问转换为C#.Net

发布时间:2020-12-13 22:40:12 所属栏目:Windows 来源:网络整理
导读:我有一台硬币计数器机(SC350 / 360),通过RS232C接口连接到计算机.我有描述通信协议的技术文档,还包括一个工作pascal程序来操作机器.我复制了pascal代码,并在Turbo Pascal上使用DosBox对 Windows 7 64位进行了测试,代码编译成功.我现在想要实现的是将这些pasc
我有一台硬币计数器机(SC350 / 360),通过RS232C接口连接到计算机.我有描述通信协议的技术文档,还包括一个工作pascal程序来操作机器.我复制了pascal代码,并在Turbo Pascal上使用DosBox对 Windows 7 64位进行了测试,代码编译成功.我现在想要实现的是将这些pascal代码转换为C#.Net但是我很难将几行转换为C#,因为我没有太多的串口编程经验.

这是Pascal中用于初始化与机器通信的代码. (将波特率设置为9600,8位,无奇偶校验,1个停止位)

uses crt;
const
{ COM1: RS232 port address }
RXTX = $3F8; { $2F8 if COM2: is used }
ACK = 6;
NAK = 21;
ESC = 27;
var
dummy,checkSum : integer;
key : char;
protocol : integer;

    var i : integer;
begin
i := 1843200 div 9600 div 16;
port[RXTX + 3] := $80;
port[RXTX + 1] := hi(i);
port[RXTX]:= lo(i);
port[RXTX + 3] := 3;
port[RXTX + 4] := $A;
while odd(port[RXTX + 5]) do
begin
dummy := port[RXTX];
delay(10);
end;
end; { InitComm }

我上面的代码的相应C#出现了; (如果我弄错了,请纠正我)

SerialPort port=new SerialPort("COM1",9600,Parity.None,8,StopBits.One);

但我无法理解如何转换其余的pascal程序.我遇到困难的一些程序是;

procedure Tx(data : integer);
{ Transmit a character on serial channel }
begin
while port[RXTX + 5] and $20 = 0 do;
port[RXTX] := data and $FF;
end; { Tx }

function RxWait : integer;
{ Waits for a character from serial channel }
begin
while not odd(port[RXTX + 5]) do;
RxWait := port[RXTX];
end; { RxWait }

procedure Tx2(data : integer);
{ Transmit a char on serial channel + Calculate check sum }
begin
Tx(data);
checkSum := (checkSum + data) and $FF;
end; { Tx2 }

你能帮助我们如何将这些pascal代码转换为等效的C#吗?我知道我可以使用’port.Write’方法写入端口,但这不能完全适合turbo pascal代码和端口数组.(例如端口[RXTX 3]:= $80;)我不知道是什么端口数组索引’RXTX 3’指的是与C#有关.

如果你能帮助我,我真的很感激,我希望我能学会自己转换其余的pascal代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读