Null 문자 '\0'을 수신할 때 PuTTY의 기본 동작

Null 문자 '\0'을 수신할 때 PuTTY의 기본 동작

null 문자 '\0' 수신과 관련하여 터미널 출력에서 ​​예상치 못한 동작을 조사하고 있습니다. 2 \0이 포함될 것으로 예상되는 문자열을 보내고 있지만 이는 PuTTY에 표시되지 않습니다.

에 따르면이 질문PuTTY는 정상적인 상황에서 null을 보내지 않는다는 것을 암시합니다. 그러나 그 질문은 10년이 가까워지고 있으며 PuTTY가 그 기간 동안 업데이트를 받았다고 가정합니다.

나는PuTTY 사용 설명서주로 PuTTY 패널에 대한 문서와 오류 메시지 및 연결에 대한 많은 문서를 찾았습니다.3.3장"문자 집합 구성 변경"에 대해 설명하지만 주로 라틴 문자가 아닌 알파벳과 관련되어 있으며 다음으로 연결됩니다.4.10장, 번역 패널입니다.

내 질문은 간단합니다.PuTTY는 \0 문자를 수신해야 할 때 일반적으로 무엇을 합니까? 받지 못하는 걸까요? 문자를 수신했지만 터미널에 표시되지 않습니까?

추가 정보가 필요한 경우 알려주시기 바랍니다.

PuTTY로 데이터를 전송하는 데 사용되는 코드는 STM32 보드에서 C로 되어 있습니다.

static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
  /* USER CODE BEGIN 6 */
  USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
  USBD_CDC_ReceivePacket(&hUsbDeviceFS);

  memset (buffer, '\0', 64);  // clear the buffer
  uint8_t len = (uint8_t)*Len;  //Converts Len as uint32_t to len as uint8_t
  memcpy(buffer, Buf, len);  // copy the data to the buffer
  memset(Buf, '\0', len);   // clear the Buf also
  //Code used to send message back

  /*In the full version, there will be another function outside of this file.
   * The buffer will be processed and a proper message will be sent.
   * Check that other file to see how it gets processed when we eventually implement it.
   */

  uint8_t transmit_message[64] = "TOWST_FIRMV_REEEEEEE_27\r\n"; //Do we have \r\n?
  //CDC_Transmit_FS(transmit_message, sizeof(transmit_message));
  //HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);
  //message_Received(buffer, len);
  process_Message(buffer, len);
  return (USBD_OK);
  /* USER CODE END 6 */
}

void process_Message(uint8_t* message, uint16_t Len){
    HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);
    uint8_t* inputCmd[5];
    uint8_t* inputMessage[8];
    uint8_t outputCmd[5];
    uint8_t outputData[8];

//  strcpy((char*) inputCmd, (const char*)message + COMMAND_CHAR);
//  strcpy((char*) inputMessage, (const char*)message + DATA_CHAR);
    if (strcmp(inputCmd, "FIRMV") == 0){
        memcpy(outputCmd, "FIRMV", COMMAND_LENGTH);
        memcpy(outputData, "01050A00", DATA_LENGTH);
    }
    else{
        memcpy(outputCmd, "REEEE", COMMAND_LENGTH);
        memcpy(outputData, "99999999", DATA_LENGTH);
    }

//  message_Received(message, Len);
    send_Message(outputCmd, outputData);
}

void send_Message(uint8_t* cmd, uint8_t* data){
    uint8_t outputMessage[25] = "TOWST_";  //Size of array is for future uses.
    strncpy((char*) outputMessage + 8, "FIRMV", 5);
    CDC_Transmit_FS(outputMessage, sizeof(outputMessage));
}

    //Expected output: 'TOWST_\0\0FIRMV' based on this post, which per my understanding suggests that strncpy will fill in unfilled memory with null chars. https://aticleworld.com/how-to-use-strncpy-and-how-to-write-your-own-strncpy 


관련 정보