位掩码和 Air724 LTE 模块

Posted

技术标签:

【中文标题】位掩码和 Air724 LTE 模块【英文标题】:Bitmasking and Air724 LTE Module 【发布时间】:2022-01-10 04:45:27 【问题描述】:

在这方面寻求一点帮助(请原谅双关语)。

我需要在 Air724 调制解调器上设置各种频段参数,如下面的 AT*BAND= 语法描述符所示。

我在澳大利亚,希望仅使用 Telstra FDD-LTE Band 3。我正在寻求一些关于如何使语法正确的帮助?这就是bands的位操作。

非常感谢任何帮助。

解决方案适用于 Arduino C 编译器,因此任何 C 构造都会有用。

谢谢。

语法

AT*BAND=[<mode>[<GSMband>,<UMTSband>,<LTEbandH>,<LTEbandL>[,<roamingConfig>,<srvDomain>,<bandPriorityFlag>]]]

Note: <mode>: integer type
0 –GSM network
1 –UMTS network
2 –Dual mode(GSM and UMTS) (auto)
3 –Dual mode(GSM and UMTS) (GSM preferred)
4 –Dual mode(GSM and UMTS) (UMTS preferred)
5 –LTE network
6–Dual mode(GSM and LTE)(auto)
7–Dual mode(GSM and LTE)( GSM preferred)
8–Dual mode(GSM and LTE)(LTE preferred)
9–Dual mode(UMTS and LTE)(auto)
10–Dual mode(UMTS and LTE)(UMTS preferred)
11–Dual mode(UMTS and LTE)(LTE preferred)
12–Trip mode(auto)
13–Trip mode(GSM preferred)
14–Trip mode(TD preferred)
15–Trip mode(LTE preferred) 

<GSMband>: integer type <GSMband> is a sum of integers each representing a GSM band
(in other words bit mask)
1 –PGSM 900 (standard or primary)
2 –DCS GSM 1800
4 –PCS GSM 1900
8 –EGSM 900 (extended)
16 –GSM 450
32 –GSM 480
64 –GSM 850 

<UMTSband>: integer type <UMTSband> is a sum of integers each representing a UMTS
band (in other words bit mask)
1 –UMTS_BAND_1
2 –UMTS_BAND_2
4 –UMTS_BAND_3
8 –UMTS_BAND_4
16 –UMTS_BAND_5
32 –UMTS_BAND_6
64 –UMTS_BAND_7
128 –UMTS_BAND_8
256 –UMTS_BAND_9 

<LTEbandH>: integer type <LTEbandH> is a sum of integers each representing a TDD
LTEband (in other words bit mask)
32 –TDLTE_BAND_38
64 –TDLTE _BAND_39
128 –TDLTE _BAND_40
256 –TDLTE _BAND_41 

<LTEbandL> integer type <LTEbandL>is a sum of integers each representing a FDDers each representing a TDDLTEband (in other words bit mask)
32 –TDLTE_BAND_38
64 –TDLTE _BAND_39
128 –TDLTE _BAND_40
256 –TDLTE _BAND_41 

<LTEbandL> integer type 
<LTEbandL>is a sum of integers each representing a FDD
1 –FDDLTE_BAND_1
4 –FDDLTE _BAND_3
8 –FDDLTE _BAND_4
64– FDDLTE _BAND_7
65536 –FDDLTE _BAND_17
524288 –FDDLTE _BAND_20 

<roamingConfig>: integer value
0 –not support
1 –support
2 –no change 

<srvDomain>: integer value
0 –CS only
1 –PS only
2 –CS and PS
3 –ANY
4 –no change 

<bandPriorityFlag>
0 –default
1 –TD-LTE
2 –FDD-LTE 

【问题讨论】:

你能补充一点关于你的问题的细节吗?我不确定你需要达到什么目标。您可以链接到任何文档吗? 当然,我正在尝试设置 Air724 LTE 模块的运行频率:喜欢这里的 doco:2keep.net/wp-content/uploads/2019/06/… 命令是 AT*BAND= ......鉴于 Air724 和 Telstra 在 LTE 空间中运行的唯一频段是 Band,我正在尝试如何设置频段3 1800MHZ。 GSM (2G) 在澳大利亚不再存在,所以我不需要 GSM 频段,而 Telstra 频段 3 仅是 FDD-LTE。所以我不需要TDD-LTE。这有意义吗? AT*BAND“命令”通过某种串行连接发送到模块还是在哪里使用这个命令? 是的,AT*BAND = 命令通过串行通讯发送到模块。我可以让所有其他 AT 命令正常工作,只是 BAND 命令的位运算符让我失望。 【参考方案1】:
AT*BAND=6,0,0,0,4

请问如何使语法正确?这就是bands的位操作

忽略位操作。文中写道:

整数类型是整数的总和,每个整数代表一个 GSM 频段

例如,如果您想支持 UMTS 频段 1. 4 和 9:那么您会看到 1 –UMTS_BAND_18 –UMTS_BAND_4256 –UMTS_BAND_9 因此您添加数字 1 + 8 + 256 = 265 并发送值 265 .

无论如何,如果您要将数字转换为二进制:

0b000001 –UMTS_BAND_1
0b000010 –UMTS_BAND_2
0b000100 –UMTS_BAND_3
0b001000 –UMTS_BAND_4
... etc. ...

然后您可以看到每个数字都设置了单个位。这些数字的加法等于 AND 位屏蔽这些数字,因为每个位都是 unqiue..

【讨论】:

非常感谢。是的,它有效,我现在没有收到错误。但是,现在我确实有另一个问题。有没有人使用过这些 Air724 类型的模块之一? openluat.com/Product/4gcat1/Air724UG.html如果有,你有没有让他们在中国以外的地方工作?

以上是关于位掩码和 Air724 LTE 模块的主要内容,如果未能解决你的问题,请参考以下文章

linux网络基础---子网掩码和子网划分

Three.js中使用MarkPass(掩码)的高级效果组合器

什么是位掩码?

如何记录位掩码

C中的位掩码

使用 SQLite 进行位掩码分组