所以,我正在使用AT命令和Matlab来返回来电显示,但这并不重要。
一切都很好,除了它返回ASCII数字这一事实,我不得不花时间将这个ASCII代码“翻译”成char,这样我才能知道它是什么意思。
>> s = serial('COM8');
>> fopen(s)
>> fwrite(s, [65 84 43 67 82 67 61 49 13])
>> s
Serial Port Object : Serial-COM8
Communication Settings
Port: COM8
BaudRate: 9600
Terminator: 'LF'
Communication State
Status: open
RecordStatus: off
Read/Write State
TransferStatus: idle
BytesAvailable: 47
ValuesReceived: 0
ValuesSent: 18
>> fread(s, 47)
它返回47个这样的ASCII数字(请注意我删除了大部分返回的代码):
ans =
65
84
43
67
82
67
61
49
13
我尝试过以下事项:
char(fread(s,47))
和
z = fread(s,47)
char(z)
但是这些都不起作用
z = [65 84 43 67 82 67 61 49 13]
char(z)
工作正常。我想这是因为fread
返回ASCII代码,它们之间有换行符,而不仅仅是我在上面的代码中写的空格。
答案 0 :(得分:1)
尝试str2double
,str2num
或者只从您拥有的ascii代码中减去'0'
(字符'0'的ascii值)。
答案 1 :(得分:0)
以下是我从文件中读取时的方法 -
>> s = fopen('.gitignore') # Just a file in my current directory
>> z = fread(s,10) # Returns a column of numbers
z =
43
97
114
98
105
116
114
97
114
121
>> char(transpose(z)) # You could write z' instead of transpose(z)
ans =
+arbitrary
其中“+任意”是我读过的文件的前10个字符。
答案 2 :(得分:0)
我使用了类来查明返回的类是serial
。所以我发现了fgets
并且效果很好。关于http://www.mathworks.com/help/matlab/ref/serial.fgets.html上的fgets的更多信息
这是输入/输出。
tline = fgets(s)
tline =
ATD0888123456