在做一个打印程序 通过WINIO控制通讯。但是传输速率很慢请达人帮忙啊!传输的是我把要传输的数据放在队列中。 然后在一个子线程读取队列数据并用个死循环查询并口状态开始传输的 下面是发数据代码,帮忙看看为什么传输速率会很慢呢!不知道是哪出的问题。
private bool SetSingleByteToParallel(Byte single)
{
Byte portValue = 0;
int previousDate = 0, laterDate = 0;
previousDate = System.DateTime.Now.Minute * 60 + System.DateTime.Now.Second;
while (true)
{
laterDate = System.DateTime.Now.Minute * 60 + System.DateTime.Now.Second;
if (laterDate - previousDate <= 1)
{
GetPortVal(889, ref portValue, 1); //读状态寄存器
portValue &= 128;
if (portValue == 128) //判断是否为忙,BUSY=80H时,为不忙;BUSY=00H时,为忙。
{
if (single.ToString("X2") == "0C")
Evolpefront.OutQueue();
label.SetText(single.ToString("X2"));
SetPortVal(888, single, 1); //写数据寄存器
GetPortVal(890, ref portValue, 1); //读控制寄存器,让nstrobe为低电平
portValue ^= 1;
SetPortVal(890, portValue, 1);
portValue &= 254;
SetPortVal(890, portValue, 1); //写控制寄存器,让nstrobe为高电平
return true;
}
}
else
{
return false;
}
}
private bool SetSingleByteToParallel(Byte single)
{
Byte portValue = 0;
int previousDate = 0, laterDate = 0;
previousDate = System.DateTime.Now.Minute * 60 + System.DateTime.Now.Second;
while (true)
{
laterDate = System.DateTime.Now.Minute * 60 + System.DateTime.Now.Second;
if (laterDate - previousDate <= 1)
{
GetPortVal(889, ref portValue, 1); //读状态寄存器
portValue &= 128;
if (portValue == 128) //判断是否为忙,BUSY=80H时,为不忙;BUSY=00H时,为忙。
{
if (single.ToString("X2") == "0C")
Evolpefront.OutQueue();
label.SetText(single.ToString("X2"));
SetPortVal(888, single, 1); //写数据寄存器
GetPortVal(890, ref portValue, 1); //读控制寄存器,让nstrobe为低电平
portValue ^= 1;
SetPortVal(890, portValue, 1);
portValue &= 254;
SetPortVal(890, portValue, 1); //写控制寄存器,让nstrobe为高电平
return true;
}
}
else
{
return false;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货