我的 AB Micro820 PLC 中有 modbus 映射设置。我有一个 40001 的数组用于写入,一个 42001 的数组用于读取。两者都是 200 个元素和 REAL 类型(32 位浮点数)。我目前可以读写,所以我知道代码可以工作,只是不正确。这些值被读/写为非常小的值(即4.58577478E-19)。有人能指出我正确的方向吗?
#!/usr/bin/env python
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
from pymodbus.payload import BinaryPayloadBuilder
from pymodbus.client.sync import ModbusTcpClient
import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.INFO)
ip_address = "192.168.2.101"
client = ModbusTcpClient(ip_address)
if client.connect(): # connection is OK
# write float
builder = BinaryPayloadBuilder(endian=Endian.Little)
builder.add_32bit_float(77.77)
payload = builder.build()
result = client.write_registers(1, payload, skip_encode=True)
# read floats
result = client.read_holding_registers(2001, 4)
decoder = BinaryPayloadDecoder.fromRegisters(result.registers, endian=Endian.Little)
print …Run Code Online (Sandbox Code Playgroud) 我的网站有一个带有 HTML 表单的联系我们页面,该表单将 POST 提交到用于PHPMailer发送电子邮件的本地 PHP 脚本。我的问题是,如果我将网站迁移到 AWS Amplify,它仍然可以工作吗?他们使用什么版本的 PHP?我在他们的论坛上发布了一个问题,但没有得到回复。
我正在寻找使用boost :: asio来读取12位数字小键盘的方法。我目前可以通过以下方式完成此任务:
fd = open ("/dev/input/event0", 0_NONBLOCK);
read (fd, &ev, sizeof ev);
Run Code Online (Sandbox Code Playgroud)
你知道我怎么用boost :: asio做到吗?我正在使用Linux和C ++。这篇文章和这篇文章很有用。我不会使用串行端口(io,“ / dev / usb / hiddev0”),因为它不是串行端口,对吗?
谢谢。
如果我插入设备,然后说,/dev/ttyUSB0并且我想0根据其VID:PID(使用找到lsusb)获取该号码,那么在C ++ Linux中该怎么做?我有这段代码可以找到一个打印机设备,如果有帮助的话:
int printer_open (void)
{
char printer_location[] = "/dev/usb/lpX";
struct stat buf;
// continuously try all numbers until stat returns true for the connected printer
for (int i = 0; i < 10; i++)
{
printer_location[11] = '0' + i;
if (!stat (printer_location, &buf))
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我运行命令 ng update
We analyzed your package.json, there are some packages to update:
Name Version Command to update
-----------------------------------------------------------------------------------
@angular/core 9.0.7 -> 9.1.0 ng update @angular/core
Run Code Online (Sandbox Code Playgroud)
所以我跑了ng update @angular/core,它说Package '@angular/core' is already up to date. 我该如何解决这个问题?
ng vAngular CLI: 9.1.0
Node: 13.9.0
OS: win32 x64
Angular: 9.1.0
... cli, core, forms, localize
Ivy Workspace: Yes
Package Version
-------------------------------------------------------------
@angular-devkit/architect 0.900.7
@angular-devkit/build-angular 0.900.7
@angular-devkit/build-optimizer 0.900.7
@angular-devkit/build-webpack 0.900.7
@angular-devkit/core 9.1.0
@angular-devkit/schematics 9.1.0
@angular/animations 9.0.7
@angular/common 9.0.7
@angular/compiler 9.0.7 …Run Code Online (Sandbox Code Playgroud) 我使用Boost ASIO通过以太网连接到带有以太网屏蔽的Arduino Nano.这是Arduino设置:
#include <EtherCard.h>
ether.staticSetup("10.0.0.4", "10.0.0.1");
ether.udpServerListenOnPort(&callback_function, 1337);
Run Code Online (Sandbox Code Playgroud)
这是我连接到它的C++代码:
头
#include <boost/asio.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
#include <boost/bind.hpp>
#include <boost/thread.hpp>
#include <boost/system/error_code.hpp>
#include <boost/system/system_error.hpp>
boost::system::error_code error_1;
boost::shared_ptr <boost::asio::io_service> io_service_1;
boost::shared_ptr <boost::asio::ip::udp::socket> socket_1;
Run Code Online (Sandbox Code Playgroud)
初始化
// 1. reset io service
io_service_1.reset();
io_service_1 = boost::make_shared <boost::asio::io_service> ();
// 2. create endpoint
boost::asio::ip::udp::endpoint remote_endpoint(
boost::asio::ip::address::from_string("10.0.0.4"),
1337
);
// 3. reset socket
socket_1.reset(new boost::asio::ip::udp::socket(*io_service_1));
// 4. connect socket
socket_1->async_connect(remote_endpoint, socket_1_connect_callback);
// 5. start io_service_1 run thread after giving it work
boost::thread t(boost::bind(&boost::asio::io_service::run, *&io_service_1));
Run Code Online (Sandbox Code Playgroud)
打回来 …