社区
C#
帖子详情
有个地磅,也就是一个称,从并口向针式打印机输出,我想直接读取这个数据可行否?
icwin
2008-01-19 10:29:59
谢谢了。
...全文
239
4
打赏
收藏
有个地磅,也就是一个称,从并口向针式打印机输出,我想直接读取这个数据可行否?
谢谢了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lzcymx
2008-04-22
打赏
举报
回复
直接从这个口定义的某三个引脚就可以读了.一般的厂商打印机和与电脑通讯用的是一个口,只是引脚定义不一样.如果不明白QQ31344990
pfworld
2008-01-23
打赏
举报
回复
using System;
namespace WindowsApplication2
{
/// <summary>
/// 电子称相关操作(含串口操作)。
/// </summary>
/// <remarks> 以4800bps通讯,则有每秒钟有9600/8/12 = 50 组称重数据传输到计算机。每100ms 有5组数据,200 ms 有10组数据,500ms 25 组数据。</remarks>
public sealed class Weighbridge
{
private static Information.IO.SerialCommunications.SerialPort __port = null;
private static Information.IO.SerialCommunications.SerialStream __stream = null;
/// <summary>
/// 初始化 Weighbridge 类对象。
/// </summary>
public Weighbridge()
{
}
/// <summary>
/// 打开串口,以便接下来对电子称进行操作。
/// </summary>
public static void OpenCom()
{
OpenCom("COM1");
}
/// <summary>
/// 打开串口,以便接下来对电子称进行操作。
/// </summary>
/// <param name="com">电子称所连接到德串口。COM1、COM2、COM3、COM4等。</param>
public static void OpenCom(string com)
{
if(__port != null)
return;
__port = new Information.IO.SerialCommunications.SerialPort(com, 4800);
try
{
__port.Open(Information.IO.AccessMode.Read);
__stream = __port.GetStream();
}
catch
{
__port = null;
__stream = null;
throw new System.IO.IOException("无法打电子称仪表所连接的计算机串口。");
}
}
/// <summary>
/// 打开串口,以便接下来对电子称进行操作。
/// </summary>
/// <param name="com">电子称所连接到德串口。COM1、COM2、COM3、COM4等。</param>
/// <param name="pt">波特率。</param>
public static void OpenCom(string com, int pt)
{
if(__port != null)
return;
__port = new Information.IO.SerialCommunications.SerialPort(com, pt);
try
{
__port.Open(Information.IO.AccessMode.Read);
__stream = __port.GetStream();
}
catch
{
__port = null;
__stream = null;
throw new System.IO.IOException("无法打电子称仪表所连接的计算机串口。");
}
}
public static decimal ReadWeight()
{
//读计数器,当有N次(当前N = 0x0040),则认为是电子称错误,引发异常。
int READ = 0x0000;
int READMAX = 0x0040;
int COUNT = 2;
byte [] buffer = new byte [11];
byte [][] List = new byte [COUNT][];
int k = 0;
while(k < COUNT)
{
List[k] = new byte [11];
while(true)
{
int b = 0;
READ = 0;
do
{
try
{
b = __stream.ReadByte();
}
catch(Exception ex)
{
throw new System.IO.IOException("读取数据错误:\n" + ex.ToString());
}
READ ++;
if(READ == READMAX)
throw new System.IO.IOException("无法正确读取电子称重量数据。");
}
while(b != 2);
__stream.Read(List[k], 0, 11);
if(List[k][10] == 3)
{
break; // 还没有处理异或校验
}
}
k++;
}
buffer = List[COUNT-1];
string s = "";
for(int i = 0; i < 7; i ++)
{
s += ((char)buffer[i]).ToString();
}
switch((int)buffer[7])
{
case 48 + 4 :
s = s.Insert(3, ".");
break;
case 48 + 3 :
s = s.Insert(4, ".");
break;
case 48 + 2 :
s = s.Insert(5, ".");
break;
case 48 + 1 :
s = s.Insert(6, ".");
break;
default :
break;
}
return Decimal.Parse(s);
}
/// <summary>
/// 关闭串口,结束操作。
/// </summary>
public static void CloseCom()
{
if(__port == null)
return;
__stream.Close();
__port.Close();
__port = null;
}
}
}
rangeon
2008-01-19
打赏
举报
回复
应该可以,不过没搞过并口的,一般的地磅都是串口通讯RS232的
sjm2003
2008-01-19
打赏
举报
回复
冒搞错,帮顶下。
delphi
读取
地磅
数据
通过Delphi去
读取
地磅
或磅秤的
数据
1.通过电脑的COM
口
读取
数据
2.我的磅秤
读取
的原
数据
附件里有,大家看着自己读出来的
数据
是什么,在程序里改一下截取的位数就可以了
delphi
地磅
读取
窗
口
(通过串
口
读取
地磅
实时
数据
)
通过串
口
读取
地磅
实时
数据
,不同的
地磅
接
口
参数可能有不一样的。
读取
数据
后自动写入注册表相关项。可在其他程序里面
读取
。
port.rar_C#
地磅
_C#
地磅
_仪表
数据
读取
_
地磅
_
地磅
读数
使用c#编写的代码,其功能主要是用来
读取
地磅
仪表上的
数据
。
delphi
读取
磅秤
数据
通过Delphi去
读取
地磅
或磅秤的
数据
1.通过电脑的COM
口
读取
数据
2.我的磅秤
读取
的原
数据
附件里有,大家看着自己读出来的
数据
是什么,在程序里改一下截取的位数就可以了
用VBA
读取
电子
称
数据
用EXCEL进行电子
称
的读数,简单可靠,无需复杂的
数据
库技术支持!
C#
110,528
社区成员
642,571
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章