我之前问了一个关于当Win10升级到Win 11时不再使用PHP调用的问题。它现在奇怪地写到一个文件,而不是set 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的文件:(
fyi: PHP中的“回勾引号”执行其中的命令--这在Win11上仍然有效。
C:\> mode com3: BAUD=38400 PARITY=N data=8 stop=1 xon=off并且显然可以使用以下命令发送命令:
C:\> set /p x="hello" <nul >\\.\COM3但是,我不想发送"hello“,而是使用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脚本,以便能够发送这些数字值,那么很感激吗?(可能已经很好了;)
fyi:在232分析器或USB串口软件-我会发送代码在"DEC",与"1,255,1,4,64,5“,这也是工作.如果有助于设置在CMD提示符中将发送的值。
谢谢你的帮助。
发布于 2022-02-04 05:31:11
这段代码最终起作用了,以防对任何人有帮助:
<?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”执行操作是有效的,但是由于命令字符似乎发生了变化,出现了问题。因此,通过写入文件,并从文件中调用命令,它就可以工作了。还必须在COM3之前从PHP中删除\转义字符,因为我认为这是被忽略的。感谢您在本网站上发表的文章:https://batchloaf.wordpress.com/2013/02/12/simple-trick-for-sending-characters-to-a-serial-port-in-windows/
任何人都知道如何直接发送命令,这样它就不会损坏,所以不需要从文件中获取将是有帮助的?谢谢。
https://stackoverflow.com/questions/70932375
复制相似问题