如何转换这段代码?有请高手! ( 积分: 300 )

  • 主题发起人 主题发起人 Cut.fei
  • 开始时间 开始时间
C

Cut.fei

Unregistered / Unconfirmed
GUEST, unregistred user!
前提-------------不要告诉我用嵌入汇编语言操作。Win2000下无法使用的。这样的回答,将得不到分的!
----------------------如下两个函数过程-----------------------------------------
__declspec( dllexport ) bool __stdcall Read(unsigned short int *value)
{
int x;
x=_inp(Port+5);

if ((_inp(Port+5) & 0x1)==0x1)
{
//_outp((Port+3),0x3);
*value=_inp(Port);

x=_inp(Port+5);
return true;
}
else
return false;
}
---------------------------------------
__declspec( dllexport ) void __stdcall Init(int comport)
{
if (comport==1)
Port=0x3f8;
else
Port=0x2f8;

_outp((Port+3),0x80);
_outp(Port+0,0x18);
_outp(Port+1,0x0);
_outp(Port+3,0x2b);
_outp(Port+4,0x03);
_outp(Port+1,0x0);
}
-----------------------请使用Spcomm转成Delphi代码------------------------------

如果认为分数不够,我可以加你满意!
 
前提-------------不要告诉我用嵌入汇编语言操作。Win2000下无法使用的。这样的回答,将得不到分的!
----------------------如下两个函数过程-----------------------------------------
__declspec( dllexport ) bool __stdcall Read(unsigned short int *value)
{
int x;
x=_inp(Port+5);

if ((_inp(Port+5) & 0x1)==0x1)
{
//_outp((Port+3),0x3);
*value=_inp(Port);

x=_inp(Port+5);
return true;
}
else
return false;
}
---------------------------------------
__declspec( dllexport ) void __stdcall Init(int comport)
{
if (comport==1)
Port=0x3f8;
else
Port=0x2f8;

_outp((Port+3),0x80);
_outp(Port+0,0x18);
_outp(Port+1,0x0);
_outp(Port+3,0x2b);
_outp(Port+4,0x03);
_outp(Port+1,0x0);
}
-----------------------请使用Spcomm转成Delphi代码------------------------------

如果认为分数不够,我可以加你满意!
 
_outp((Port+3),0x80);
_outp(Port+0,0x18);
_outp(Port+1,0x0);
_outp(Port+3,0x2b);
_outp(Port+4,0x03);
_outp(Port+1,0x0);
这些代码在windows中已经不能使用了(win98例外),win2000/xp不允许用户程序直接对端口进行操作。这个与嵌入汇编不汇编没有关系,什么语言都一样的^_^
你应该将这些功能函数写入一个WDM驱动中,然后使用CreateFile/DeviceIoControl/ReadFile/WriteFile函数来进行这些操作!
 
看你的这个代码应该是串口操作,因此不需要使用驱动。直接用Win32API操作即可。
不过因为对这些端口的功用不清楚,因此不晓得那些API直接对应。我想Win32API中的功能是应该可以覆盖你的功能要求的。
 
API应该可以
 
后退
顶部