xiaojiao
9 小时以前 0071cf57931792eb2357a1e67a42bcaa9603c567
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_QuartzJob;
 
namespace WIDESEAWCS_Tasks
{
    /// <summary>
    /// 任务获取 后底板1 的任务
    /// </summary>
    /// 
    [DisallowConcurrentExecution]
    public class TaskAcquisition_Back1_Job : JobBase, IJob
    {
        private readonly ITaskRepository _taskRepository;
        private readonly ITaskService _taskService;
        private readonly ISys_ConfigService _sys_ConfigService;
        private readonly IDt_StationManagerRepository _stationManagerRepository;
        public TaskAcquisition_Back1_Job(ITaskRepository taskRepository, ITaskService taskService, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository)
        {
            _taskRepository = taskRepository;
            _taskService = taskService;
            _sys_ConfigService = configService;
            _stationManagerRepository = stationManagerRepository;
        }
        public Task Execute(IJobExecutionContext context)
        {
            string ip = "127.0.0.1";
            int port = 502;
            string name = "后底板1";
            ModbusTcp modbusTcp = new ModbusTcp(ip, port, name);
            modbusTcp.Connect();
            //var a = modbusTcp.Read("40002", 20);
            //string barcode = Encoding.UTF8.GetString(a).Replace("\0", "").Replace("\\0", "");
 
            // 读取指定的地址读到10进制的ascii码转成16进制
            byte[] rawBytes = modbusTcp.Read("10", 20);
            string originalDecimalStr = Encoding.ASCII.GetString(rawBytes).TrimEnd('\0');
            Console.WriteLine($"读取到的原始十进制字符串:{originalDecimalStr}");
            // 下面这一段就是你要的:转 16 进制 
            ulong number = ulong.Parse(originalDecimalStr);  // 转成数字
            string hexStr = number.ToString("X");            // 转大写16进制
            Console.WriteLine("转换成16进制:" + hexStr);
 
            // 16进制转成10进制
            // 2. 16进制 → 转回十进制(你要的功能)
            ulong decimalResult = Convert.ToUInt64(hexStr, 16);
            Console.WriteLine("16进制转回十进制:" + decimalResult);
            bool flag = modbusTcp.Write("30", decimalResult.ToString());
 
            modbusTcp.Disconnect();
            Console.WriteLine("进入了TaskAcquisition_Back1_Job");
            return Task.CompletedTask;
        }
    }
}