首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从串行Mettler Toledo电子秤读取重量

从串行Mettler Toledo电子秤读取重量
EN

Stack Overflow用户
提问于 2012-03-13 00:50:56
回答 4查看 7.3K关注 0票数 0

我试图在c#应用程序中读取电子秤的重量,发现this问题这正是我正在尝试做的,但对我来说下面的函数从未运行过。

代码语言:javascript
复制
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
this.Invoke(new EventHandler(DoUpdate)); 
} 

我已经在设备管理器中检查了刻度,它的位置设置为Port_#0004.Hub_#0003,看起来工作正常。我不确定刻度的端口号,所以我检查了

代码语言:javascript
复制
var test = SerialPort.GetPortNames();

并且只返回COM1

Edit 1:当我执行int a = port.ReadByte();时,我的应用程序挂起,并且执行永远不会从这个语句向前移动。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-24 10:14:08

请看this的帖子,我是用麦克库连接的。

代码语言:javascript
复制
using System;
using System.Linq;
using System.Text;
using HidLibrary;

namespace MagtekCardReader
{
    class Program
    {
        private const int VendorId = 0x0801;
        private const int ProductId = 0x0002;

        private static HidDevice _device;

        static void Main()
        {
            _device = HidDevices.Enumerate(VendorId, ProductId).FirstOrDefault();

            if (_device != null)
            {
                _device.OpenDevice();

                _device.Inserted += DeviceAttachedHandler;
                _device.Removed += DeviceRemovedHandler;

                _device.MonitorDeviceEvents = true;

                _device.ReadReport(OnReport);

                Console.WriteLine("Reader found, press any key to exit.");
                Console.ReadKey();

                _device.CloseDevice();
            }
            else
            {
                Console.WriteLine("Could not find reader.");
                Console.ReadKey();
            }
        }

        private static void OnReport(HidReport report)
        {
            if (!_device.IsConnected) { return; }

            var cardData = new Data(report.Data);

            Console.WriteLine(!cardData.Error ? Encoding.ASCII.GetString(cardData.CardData) : cardData.ErrorMessage);

            _device.ReadReport(OnReport);
        }

        private static void DeviceAttachedHandler()
        {
            Console.WriteLine("Device attached.");
            _device.ReadReport(OnReport);
        }

        private static void DeviceRemovedHandler()
        {
            Console.WriteLine("Device removed.");
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-02-19 20:30:29

我遇到了这样的问题,我解决了这个问题,在设备中将COM配置(Configuration > Comunication > Conections)更改为SICS。我不知道你的比例模型,但也许我的代码能帮上忙。[Reading data from Mettler Toledo (IND560) scale device using C#]

票数 1
EN

Stack Overflow用户

发布于 2012-03-13 00:52:52

您可以尝试轮询而不是使用DataReceived事件吗?此外,我认为DataReceived事件在触发之前有一个阈值,您可能也想要调查一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9671294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档