0

我之前问过一个关于当 Win10 升级到 Win 11 时 PHP 调用不再工作的问题。它现在奇怪地写入文件而不是设置的 COM 端口(可能是 win11 apache/php 问题,请参阅我的其他问题?) .

曾经工作的代码是:

<?php

`mode com3: BAUD=38400 PARITY=N data=8 stop=1 xon=off`;

file_put_contents(com3, chr(1).chr(255).chr(1).chr(4).chr(64).chr(5));

?>

这曾经可以正常工作,但现在写入一个名为 com3 的文件 :(
仅供参考:PHP 中的 ` 反引号会执行其中的命令 - 这仍然适用于 Win11。

  • 问题是如何直接从控制台/CMD 提示符执行此操作。这已经有效,例如:
C:\> mode com3: BAUD=38400 PARITY=N data=8 stop=1 xon=off

并且显然可以使用以下命令发送命令:

C:\> set /p x="hello" <nul >\\.\COM3

但我不想发送“你好”,而是想发送与使用 PHP 代码相同的内容:“chr(1).chr(255).chr(1).chr(4).chr(64).chr(5 ))”

任何人都知道如何从 CMD 发送此代码。因为我将制作另一个脚本来自动执行此操作。

任何建议表示赞赏?

即在php中我会做类似的事情:

<?php

$scall = chr(1).chr(255).chr(1).chr(4).chr(64).chr(5);

`mode com3: BAUD=38400 PARITY=N data=8 stop=1 xon=off`;

`set /p x="$scall" <nul >\\.\COM3`;

?>

如果有人知道我将如何更改此 PHP 脚本以便能够发送这些数字值,请欣赏?(它可能已经很好了;)

仅供参考:在 232 分析仪或一些 USB 串行 COM 端口软件上 - 我会在“DEC”中发送代码,带有“1,255,1,4,64,5”,这也有效......如果有助于设置什么值发送 CMD 提示符。

谢谢您的帮助。

4

1 回答 1

0

这段代码最终有效,以防万一:

<?php

$scall = chr(1).chr(255).chr(0).chr(255).chr(255).chr(5);
file_put_contents(“scom3.txt”, $scall);

`mode com3: BAUD=38400 PARITY=N data=8 stop=1 xon=off`;
`type “scom3.txt” > com3`;

?>

通过“set”和“echo”进行操作是可行的,但由于命令字符似乎发生了变化,因此出现了问题。因此,通过写入文件并从文件中调用命令,它起作用了。还必须从 PHP 中删除 COM3 之前的 \\ 转义字符,因为我认为被忽略了。感谢本网站上的文章: https ://batchloaf.wordpress.com/2013/02/12/simple-trick-for-sending-characters-to-a-serial-port-in-windows/

任何人都知道如何直接发送命令以使其不会损坏因此不需要从文件中获取会有所帮助吗?谢谢。

于 2022-02-04T05:31:11.320 回答