Dualsonic 모델 시리얼 번호 쓰기 에러 #2

Closed
opened 2025-05-07 12:02:17 +09:00 by Ghost · 2 comments
  1. Duaslsonic(PRO,LUX,ALPHA) 카트리지 제품 정보 읽기 불량

  -> 입력 시리얼 번호 : 412505111111

  -> 시리얼 번호 읽기 : 410527004231(시리얼번호 불량)

image.png

  1. Duaslsonic(PRO,LUX,ALPHA) 본체 제품 시리얼 번호 쓰기 오류

  ->  시리얼번호 입력란의 끝 3자리 와 앞3자리가 변경 입력(정상) 
 
image.png

1. Duaslsonic(PRO,LUX,ALPHA) 카트리지 제품 정보 읽기 불량   -> 입력 시리얼 번호 : 412505111111   -> 시리얼 번호 읽기 : 410527004231(시리얼번호 불량) ![image.png](/attachments/18bd01c7-94fb-409c-8be0-76dac6bdee45) 2. Duaslsonic(PRO,LUX,ALPHA) 본체 제품 시리얼 번호 쓰기 오류   ->  시리얼번호 입력란의 끝 3자리 와 앞3자리가 변경 입력(정상)    ![image.png](/attachments/f23cb4d3-1ae4-4273-8f94-1c172bd29a80)

시리얼 번호를 4 byte unsigned 정수로 사용하는데 표시할 때 signed 정수로 취급해서 발생한 문제임.

0x00000000-0x7FFFFFFF 범위의 숫자는 unsigned와 signed의 값이 같으나
0x80000000-0xFFFFFFFF 범위의 숫자는 signed에서 음수로 표현된다.
디바이스 f/w에서는 unsigned로 취급하고 공정s/w로 보낼 때 signed로 보내어 발생한 이슈임.

아래의 예에서 1,2는 unsigned와 signed가 같은 경우, 3,4,5는 다른 경우를 보여 줌

  1. 2001123456 (0x7746B880)
  2. 2101123456 (0x7D3C9980)
  3. 2201123456 (0x83327A80) -> signed 표현 : -2093843840 -> 보수계산: (4294967296-2093843840=2201123456 )
  4. 2301123456 (0x89285B80) -> signed 표현 : -1993843840 -> 보수계산: (4294967296-1993843840 =2301123456 )
  5. 2401123456 (0x8F1E3C80) -> signed 표현 : -1893843840 -> 보수계산: (4294967296-1893843840 =2401123456 )
  6. 2501123456 (0x95141D80) -> signed 표현 : -1793843840 -> 보수계산: (4294967296-1793843840 =2501123456 )

시리얼번호가 음수로 표시되는 3,4,5의 경우, 시리얼번호의 보수를 취하여 양수로 변환한다.
계산 식: 4294967296 (0x100000000) - 음수시리얼번호절대값

시리얼 번호를 4 byte unsigned 정수로 사용하는데 표시할 때 signed 정수로 취급해서 발생한 문제임. 0x00000000-0x7FFFFFFF 범위의 숫자는 unsigned와 signed의 값이 같으나 0x80000000-0xFFFFFFFF 범위의 숫자는 signed에서 음수로 표현된다. 디바이스 f/w에서는 unsigned로 취급하고 공정s/w로 보낼 때 signed로 보내어 발생한 이슈임. 아래의 예에서 1,2는 unsigned와 signed가 같은 경우, 3,4,5는 다른 경우를 보여 줌 1. 2001123456 (0x7746B880) 2. 2101123456 (0x7D3C9980) 3. 2201123456 (0x83327A80) -> signed 표현 : -2093843840 -> 보수계산: (4294967296-2093843840=2201123456 ) 4. 2301123456 (0x89285B80) -> signed 표현 : -1993843840 -> 보수계산: (4294967296-1993843840 =2301123456 ) 5. 2401123456 (0x8F1E3C80) -> signed 표현 : -1893843840 -> 보수계산: (4294967296-1893843840 =2401123456 ) 6. 2501123456 (0x95141D80) -> signed 표현 : -1793843840 -> 보수계산: (4294967296-1793843840 =2501123456 ) 시리얼번호가 음수로 표시되는 3,4,5의 경우, 시리얼번호의 보수를 취하여 양수로 변환한다. 계산 식: 4294967296 (0x100000000) - 음수시리얼번호절대값
Ghost closed this issue 2025-05-08 16:37:57 +09:00

시리얼번호에 SerialParsing 값을 더하는 의미: 모델코드의 의미

10진수로 표시된 값을 16진수로 바꾸어 보면 아래와 같이 5바이트만 유효한 값을 갖는다, 4,3,2,1바이트는 모두 0
Private Const PROSerialParsing As ULong = 111669149696 -> 0x1A00000000
Private Const LUXSerialParsing As ULong = 0
Private Const ALPHASerialParsing As ULong = 412316860416 -> 0x6000000000

위 값을 4바이트 시리얼번호에 더하면 시리얼번호는 유지하고 그 상위 바이트에 값을 덧씌우는 형태가 된다.
모델코드+시리얼번호의 형식이 됨
예) 모델코드: 111669149696(0x1A00000000) , 시리얼번호: 2001123456(0x7746B880)
-> 모델코드+시리얼번호 = 0x1A7746B880

시리얼번호에 SerialParsing 값을 더하는 의미: 모델코드의 의미 10진수로 표시된 값을 16진수로 바꾸어 보면 아래와 같이 5바이트만 유효한 값을 갖는다, 4,3,2,1바이트는 모두 0 Private Const PROSerialParsing As ULong = 111669149696 -> 0x1A00000000 Private Const LUXSerialParsing As ULong = 0 Private Const ALPHASerialParsing As ULong = 412316860416 -> 0x6000000000 위 값을 4바이트 시리얼번호에 더하면 시리얼번호는 유지하고 그 상위 바이트에 값을 덧씌우는 형태가 된다. 모델코드+시리얼번호의 형식이 됨 예) 모델코드: 111669149696(0x1A00000000) , 시리얼번호: 2001123456(0x7746B880) -> 모델코드+시리얼번호 = 0x1A7746B880
Ghost added the
bug
label 2025-05-16 15:40:02 +09:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jionmt-sw/etc-prod-utility#2
No description provided.