测试:SET UPDATE TASK LOCAL

90ddccb272cfecfacbc58ce551b3165c.jpeg

闲天儿不扯了,直接上干货吧。

测试一下,函数:

814b0c47df108e602284c76e31238ba8.png

a8c36304815e0d1885fbb279cfcc3aa8.png

先看数据

5f7e14f778876b23e5b9589fddbecdca.png

先看现在代码:

6db6f1a32d9bcc33d0dbf1c92977e067.png

直接执行。再看结果

dd7a4eb70cae21b95c19322d3bd298d2.png

没变化,因为使用的是update task,不显示提交,就是不commit是不会执行的。

有兴趣自己打断点试试。

那现在,打断点

1e2d092701fb04b3a9dafcd54f04c74e.png

代码加提交

aefa034c6ab129deb1499c405719b377.png

执行

b21a1276bc4ebb673c247fbd78515dfd.png

先到的commit,而不是先进的函数内断点。当然这个时候数据库也没更新,不看了。

这里改下设置

c9f6567b9c4fad5ddf0150c27f1f6391.png

574ae3e80cda33225b9f8732931bcd62.png

勾选一下,然后继续F8

主程序结束,进入更新函数

90791b63bc39a69f553ef10e0dfa89d9.png

这里继续的话,数据库就更新了。

下面咱们再改一下

26e16c946e5df6cb190acdb7a3adf23f.png

eade454bb22ac56c3fe6d325ad49349e.png

执行后弹出:

51027e5b0b5b7b6580448b35df4a605e.png

st22 

e9269701ad93baae0f33854c9c0c8eb2.png

查看db表

41a5136c6dd20fe66fa6734b900bd43d.png

AA的未更新,因为dump了,DL的更新了(因为字段定义成了日期类型,所以显示成这样了。无所谓了)

证明 AA的更新跟DL的更新不在一个LUW内。

那再改下代码

f43ff5ad922a53ce4e356d156025f7d5.png

还原数据

420d089759df658a88054c53bc32ab41.png

执行程序:

306a6c9a109573199f18c3913cc695c9.png

直接dump,看看数据

648ed1db28601d6c48b5e1cddad5975e.png

为什么要测这个?啥场景用,大家有兴趣可以留言讨论。

好了,关键字如下:

a45f1f4babcab4a3a3c532ef32d1a023.png

2024.08.24-- 2024.08.25 这两天,也就是本周六日 ,哥在杭州化缘。

没啥事儿干的施主可以一起唠唠嗑哈。

推荐阅读:

ABAP新语法1

《ABAP新语法2》

《SM30添加按钮:批导,筛选,排序等完整demo 》

《关于 SM30/VIEW_MAINTENANCE_CALL锁整张表问题》

《Demo:弹出文本输入框》

《关于update task几个有意思的测试》

动态批量修改任意表任意字段的值

动态获取查询条件的一个小Demo

使用cl_gui_docking_container 实现多ALV》

VOFM 修改 组单开票时 会计凭拆分规则

DEMO SUBMIT 某程序并获取该程序ALV数据

DEMO:S/4 1809 FAGLL03H 增加字段增强

几个ABAP实用模板,体力活就别一行行敲了,复制粘贴得了

DEMO:BTE增强实现凭证创建检查

SAP Parallel Accounting(平行分类账业务)配置+操作手册+BAPI demo程序

CC02修改确认日期BAPI:Processing of change number  was canceled》《我是怎样调试BAPI的,以F-02为例

我是不是被代码给耽误了……不幸沦为一名程序员……

三亚自由行攻略(自己穷游总结)

苏州游记

记码农十周年(20110214--20210214)

不一样的SAP干货铺群:帅哥靓妹、红包、烤羊腿!

十年老码农搬砖习惯和技巧

我这个老码农是怎么debug标准程序的

我是怎样调试BAPI的,以F-02为例

杂谈:几种接口

Odata 增删改查详例

ODATA CREATE_DEEP_ENTITY 详例

RESTful DEMO 一:SAP 如何提供 RESTful Web 服务

RESTful DEMO 四 :增删改查及调用

DEMO  search help 增强 ( vl03n KO03 等)

录BDC时  弹出的公司代码框问题

《搜索帮助系列》

《增强相关》

Debug 系列

DEBUG  系列一:Dump debug
DEBUG  系列二:Configure Debugger Layer
DEBUG系列三:使用  F9 和 watch point
DEBUG系列四:第三方接口debug
DEBUG系列五:Update  模式下的function debug
DEBUG系列六:后台JOB  debug
DEBUG系列七:保存测试参数
DEBUG系列八:Debug弹出框
debug系列九:SM13查看update更新报错
DEBUG系列十:Smartforms  debug
DEBUG系列十一:GGB1  debug
Debug系列十二:QRFC  队列 debug
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
详细讲解如何根据以下api和数据结构在博流单片机上将数据发送给手机端void ble_controller_init(uint8_t task_priority) int hci_driver_init(void) int bt_enable(bt_ready_cb_t cb)int bt_le_adv_start(const struct bt_le_adv_param *param,const struct bt_data *ad, size_t ad_len, const struct bt_data *sd, size_t sd_len)int bt_le_adv_update_data(const struct bt_data *ad, size_t ad_len,const struct bt_data *sd, size_t sd_len)int bt_le_adv_stop(void)int bt_le_scan_start(const struct bt_le_scan_param *param, bt_le_scan_cb_t cb)int bt_le_scan_stop(void)int bt_le_whitelist_add(const bt_addr_le_t *addr)int bt_le_whitelist_rem(const bt_addr_le_t *addr)int bt_le_whitelist_clear(void)int bt_le_set_chan_map(u8_t chan_map[5])int bt_unpair(u8_t id, const bt_addr_le_t *addr)int bt_conn_get_info(const struct bt_conn *conn, struct bt_conn_info *info)int bt_conn_get_remote_dev_info(struct bt_conn_info *info)int bt_conn_le_param_update(struct bt_conn *conn,const struct bt_le_conn_param *param)int bt_conn_disconnect(struct bt_conn *conn, u8_t reason)struct bt_conn *bt_conn_create_le(const bt_addr_le_t *peer,const struct bt_le_conn_param *param)int bt_conn_create_auto_le(const struct bt_le_conn_param *param)int bt_conn_create_auto_stop(void)int bt_le_set_auto_conn(const bt_addr_le_t *addr,const struct bt_le_conn_param *param)struct bt_conn *bt_conn_create_slave_le(const bt_addr_le_t *peer,const struct bt_le_adv_param *param)int bt_conn_set_security(struct bt_conn *conn, bt_security_t sec)bt_security_t bt_conn_get_security(struct bt_conn *conn)u8_t bt_conn_enc_key_size(struct bt_conn *conn)void bt_conn_cb_register(struct bt_conn_cb *cb)void bt_set_bondable(bool enable)int bt_conn_auth_cb_register(const struct bt_conn_auth_cb *cb)int bt_conn_auth_passkey_entry(struct bt_conn *conn, unsigned int passkey)int bt_conn_auth_cancel(struct bt_conn *conn)int bt_conn_auth_passkey_confirm(struct bt_conn *conn)int bt_conn_auth_pincode_entry(struct bt_conn *conn, const char *pin)int bt_le_read_rssi(u16_t handle,int8_t *rssi)int bt_get_local_address(bt_addr_le_t *adv_addr)int bt_set_tx_pwr(int8_t power)bt_le_adv_parambt_databt_le_scan_parambt_le_conn_parambt_conn,给出一个详细的例程和注释
05-19
首先,需要了解 BLE(蓝牙低功耗)协议的基本概念和原理,以及博流单片机的硬件和软件平台。在此基础上,才能进一步了解如何使用上述 API 和数据结构将数据发送给手机端。 以下是一个简单的例程,用于在博流单片机上启动 BLE 广播,并发送数据给手机端: ```c #include <zephyr.h> #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/conn.h> #include <stdio.h> #define DEVICE_NAME "MyDevice" #define APPEARANCE 0x0000 #define ADV_INTERVAL 500 /* ms */ #define DATA_LEN 10 /* bytes */ static uint8_t data[DATA_LEN] = {0}; static void adv_data_update(void) { /* TODO: update the advertisement data */ } static void adv_start(void) { struct bt_data ad[2] = { BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR), BT_DATA(BT_DATA_MANUFACTURER_DATA, data, DATA_LEN) }; struct bt_le_adv_param param = { .id = BT_ID_DEFAULT, .interval_min = ADV_INTERVAL, .interval_max = ADV_INTERVAL, .options = BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME, }; int err; err = bt_le_adv_start(&param, ad, ARRAY_SIZE(ad), NULL, 0); if (err) { printf("Failed to start advertising (err %d)\n", err); } } static void adv_stop(void) { int err; err = bt_le_adv_stop(); if (err) { printf("Failed to stop advertising (err %d)\n", err); } } static void conn_cb(struct bt_conn *conn, u8_t err) { if (err) { printf("Connection failed (err %u)\n", err); } else { printf("Connected\n"); } } void main(void) { int err; printf("BLE controller init...\n"); ble_controller_init(K_PRIO_PREEMPT(0)); printf("HCI driver init...\n"); err = hci_driver_init(); if (err) { printf("Failed to initialize HCI driver (err %d)\n", err); return; } printf("Enabling Bluetooth...\n"); err = bt_enable(conn_cb); if (err) { printf("Failed to enable Bluetooth (err %d)\n", err); return; } printf("Setting device name...\n"); err = bt_set_name(DEVICE_NAME); if (err) { printf("Failed to set device name (err %d)\n", err); return; } printf("Setting device appearance...\n"); err = bt_set_appearance(APPEARANCE); if (err) { printf("Failed to set device appearance (err %d)\n", err); return; } printf("Updating advertisement data...\n"); adv_data_update(); printf("Starting advertising...\n"); adv_start(); while (1) { /* TODO: handle other events */ } } ``` 该例程中,主要使用了以下 API 和数据结构: - `ble_controller_init()`:初始化 BLE 控制器,设置任务优先级。 - `hci_driver_init()`:初始化 HCI 驱动程序。 - `bt_enable()`:启用蓝牙,注册连接回调函数。 - `bt_set_name()`:设置设备名称。 - `bt_set_appearance()`:设置设备外观。 - `bt_le_adv_start()`:启动 BLE 广播,设置广播参数和广播数据。 - `bt_le_adv_stop()`:停止 BLE 广播。 - `struct bt_data`:BLE 数据结构,用于封装广播数据。 - `struct bt_le_adv_param`:BLE 广播参数结构,用于设置广播间隔等参数。 - `struct bt_le_scan_param`:BLE 扫描参数结构,用于设置扫描间隔等参数。 - `struct bt_le_conn_param`:BLE 连接参数结构,用于设置连接间隔等参数。 - `struct bt_conn`:BLE 连接结构,用于表示与远程设备的连接。 - `bt_conn_create_le()`:创建一个主动连接的 BLE 连接。 - `bt_le_read_rssi()`:读取 BLE 连接的 RSSI 值。 - `bt_conn_disconnect()`:断开 BLE 连接。 - `bt_conn_cb_register()`:注册连接回调函数。 - `bt_conn_auth_cb_register()`:注册连接认证回调函数。 - `bt_conn_auth_passkey_entry()`:输入连接的 PIN 码。 - `bt_conn_auth_cancel()`:取消连接认证。 - `bt_conn_auth_passkey_confirm()`:确认连接的 PIN 码。 - `bt_conn_auth_pincode_entry()`:输入连接的 PIN 码。 - `bt_set_bondable()`:设置设备是否可被配对。 - `bt_conn_set_security()`:设置 BLE 连接的安全级别。 - `bt_conn_get_security()`:获取 BLE 连接的安全级别。 需要注意的是,该例程仅仅是一个基础的框架,具体的实现还需要根据具体的需求进行修改和扩展。例如,需要根据具体的应用场景来更新广播数据、处理连接事件、读取传感器数据等操作。同时,还需要根据博流单片机的硬件和软件平台来进行相应的适配和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值