F4 Function for low value and high value

博客主要围绕ABAP编程展开,定义了内部表类型tp_person用于存储人员信息,使用DYNP_VALUES_READ函数读取动态字段值,从数据库表中查询数据存入内表it_person,还进行了去重、排序操作,最后调用F4IF_INT_TABLE_VALUE_REQUEST函数处理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

form get_values_f4_function.
* Internal Table for storage location help
  TYPES: BEGIN OF tp_person,
          bukrs LIKE pa0001-bukrs,  "Company Code
          pernr LIKE pa0001-pernr,  "Personnel number
          END OF tp_person.
  it_person     TYPE TABLE OF tp_person.
  data: dynfields type table of dynpread with header line.

  dynfields-fieldname = 'S_BUKRS-LOW'.
  append dynfields.
  dynfields-fieldname = 'S_BUKRS-HIGH'.
  append dynfields.
  call function 'DYNP_VALUES_READ'
    EXPORTING
      dyname               = sy-cprog
      dynumb               = sy-dynnr
      translate_to_upper   = 'X'
    TABLES
      dynpfields           = dynfields
    EXCEPTIONS
      invalid_abapworkarea = 1
      invalid_dynprofield  = 2
      invalid_dynproname   = 3
      invalid_dynpronummer = 4
      invalid_request      = 5
      no_fielddescription  = 6
      invalid_parameter    = 7
      undefind_error       = 8
      double_conversion    = 9
      stepl_not_found      = 10
      others               = 11.
  READ TABLE it_dyfields INDEX 1.
  rg_bukrs-low = it_dyfields-fieldvalue.
  READ TABLE it_dyfields INDEX 2.
  rg_bukrs-high = it_dyfields-fieldvalue.
  SELECT SINGLE * FROM t001 WHERE bukrs IN rg_bukrs.
  IF sy-subrc = 0. "Company code is valid
    SELECT * FROM pa0001
    INTO CORRESPONDING FIELDS OF TABLE it_person
    WHERE bukrs IN rg_bukrs.
    DELETE ADJACENT DUPLICATES FROM it_person COMPARING pernr.
    SORT it_person BY bukrs pernr.
* Display it.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
        retfield        = 'PERNR'
        dynprofield     = 'S_PERNR'
        dynpprog        = sy-cprog
        dynpnr          = sy-dynnr
        value_org       = 'S'
      TABLES
        value_tab       = it_person
      EXCEPTIONS
        parameter_error = 1
        no_values_found = 2
        OTHERS          = 3.
  ENDIF.
endform.                    "get_values_f4_function 
### STM32F4 ADC与ADS1120通信配置教程 #### 配置硬件连接 要实现STM32F4与ADS1120之间的通信,首先需确保两者通过SPI接口正确连接。具体来说,MISO、MOSI、SCK以及CS信号线应分别对应连接至STM32F4的相应引脚上[^1]。 #### 初始化SPI外设 在初始化阶段,需要设置SPI的工作模式为全双工主模式,并指定时钟极性和相位参数以匹配ADS1120的要求。此外,还需设定合适的波特率来保障数据交换的速度和准确性。 ```c // SPI Initialization Function void MX_SPI1_Init(void) { hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; // Set as master mode hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; HAL_SPI_Init(&hspi1); } ``` #### 编写读取函数 对于ADS1120而言,可通过发送特定命令字节序列启动一次性的AD转换过程并随后获取结果。这里展示了一个简单的C语言函数用于执行此操作: ```c uint16_t Read_ADC_Value(void){ uint8_t txBuffer[3]; uint8_t rxBuffer[3]; // Start conversion and read data command (refer to datasheet for exact value) txBuffer[0] = 0x08 | 0x80; // Send start byte, then dummy bytes while reading the result back into rxBuffer. HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // Pull CS low before transaction HAL_SPI_TransmitReceive(&hspi1, txBuffer, rxBuffer, 3, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // Pull CS high after transaction // Combine received MSB and LSB into a single integer representing the ADC value return ((rxBuffer[1]<<8)|rxBuffer[2]); } ``` 上述代码片段展示了如何利用HAL库中的`HAL_SPI_TransmitReceive()`函数完成同步的数据收发动作;同时注意到片选信号(Chip Select)的操作被放置于实际传输之前/之后以便正确触发器件间的交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值