通过命令行发送Ctrl+Z到串口

5
我试图使用ECHO或类似的命令行工具将以下内容发送到COM1串口(我也尝试了下载一个名为serialsend的小程序,但是我不知道如何发送相当于CTRL+Z的内容。这是通过Siemens TC35 GAM模块发送SMS消息所需的。我已经在测试中通过Hyperterminal进行发送,一切正常,但是我无法想出如何在末尾发送CTRL+Z以确认消息的结束。
这是我的代码:
AT

AT+CMGF=1

AT+CMSG="+xxxxxxxxxxx"

HELLO

现在,在我想要发送的消息“Hello”后,我需要发送CTRL+Z。但是我不知道该如何做,我尝试过以下方法:

AT

AT+CMGF=1

AT+CMSG="+xxxxxxxxxxx"

HELLO

\x1A

我曾在某处读到这样做相当于做某事,但它并没有起作用。

有人能帮我吗?我找到了一些解决方案,但它们不是命令行,而这正是我需要的。

我也尝试过使用这种格式:

ECHO AT > COM1:

但是我不知道如何发送CTRL+Z,所以我不知道它是否起作用。


谢谢您的回答,但我不知道如何通过命令行或ECHO发送此内容,您能帮忙吗?谢谢。 - omega1
我假设你是一名程序员。请到superuser.com发帖。 - Hans Passant
如果您在问题中包含一个标签,说明您使用的操作系统,那么您可能会得到更多的帮助。由于您使用了全大写命令名称“ECHO”,我假设您使用的是Windows版本。许多高级用户通过标签筛选问题,因此添加Windows或批处理文件标签可能会为您提供所需的帮助。祝你好运。 - shellter
你试过在键盘上按 CTRL+Z 键了吗? - Azmeer
4个回答

4

我写了一个名为SerialSend的免费命令行程序,正如您所提到的。自从这个问题最初被发布以来,我已经添加了一个额外的功能,允许在通过串口发送的文本中包含任意字节值(以十六进制格式)。例如,要发送Ctrl-Z(26十进制,0x1A十六进制),只需使用以下命令:

SerialSend /hex "\x1a"

端口名称/编号、波特率等可以通过附加的命令行参数进行配置。例如,
SerialSend /baudrate 9600 /devnum 2 /hex "\x1a"

更多详细信息,请参见SerialSend主页

希望对您有所帮助!

Ted


3
请使用以下内容:
port.Write(txt_msgbox.Text + char.ConvertFromUtf32(26));

它可以用:)


0
在Arduino代码中键入此命令Serial.println((char)26);...将在串行监视器上出现一个方框。复制该方框并粘贴到Notepad++中。它将显示为带有黑色背景的SUB。每当您想要键入cntrl+z时,只需复制此SUB并粘贴到串行监视器中即可。它有效。

0
在我的系统中,使用USB GSM调制解调器的脚本如下:
$ cat sendsms

    #!/bin/bash
    #usage: sendsms <mobile number> <text to send>
    printf "AT+CMGF=1\r\nAT+CMGS=\"$1\"\r\n$2\x1a" > /dev/ttyUSB3

如你所见,printfCTRL + Z 发送为 \x1a

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接