小编lea*_*ser的帖子

如何在串行通信中使用 pyserial 解码字节

我是 Python 的初学者。我有一个使用 pyserial 库与串行设备通信的程序。程序向机器发送一个字节的数字并接收字节数作为回复。

我的代码是

   import serial, string
   port = serial.Serial("COM9", 38400, timeout=10.0)
   serial.PARITY_NONE
   serial.EIGHTBITS
   serial.STOPBITS_ONE
   port.write(bytes([53, 1, 4, 0, 83]))
   print("Write done")
   data = port.read(20)

   data1= data.decode('utf-8')
   print(data1)
Run Code Online (Sandbox Code Playgroud)

输出是

   Write done
   Traceback (most recent call last):
   File "C:\Python34\serialcomm.py", line 18, in <module>
   data1= data.decode('utf-8')
   UnicodeDecodeError: 'utf-8' codec can't decode byte 0x84 in position 8:                                                                                                               
   invalid start byte
Run Code Online (Sandbox Code Playgroud)

输出应该是 [53,1,4,0​​,83,53,1,63,83]

如果我排除解码,我得到

  Write done
  b'5\x01\x04\x00S5\x1b\x00\x84S'
Run Code Online (Sandbox Code Playgroud)

python serial-port decode pyserial

5
推荐指数
1
解决办法
2万
查看次数

Spring boot @ExceptionHandler 未捕获子类异常

我创建了一些用于异常处理的子类。该方法抛出子类异常。我为超类和子类创建了@ExceptionHandler。但只有当没有对异常的超类进行处理(handleSuperException(SuperclassExceptionException e))时,才会处理子类异常。SubClassAException、SubClassBException、SubClassCException 扩展了 SuperclassException 异常。

 public class Controller @PostMapping("/path/") {
       public ResponseEntity<String> method() throws   SuperclassException{
 }
    @ExceptionHandler(SuperclassException.class)   
public ResponseEntity handleSuperException(SuperclassExceptionexception e) {
       //hadle superclass related
    }

 @ExceptionHandler({SubClassAException.class, SubClassBException.class, SubClassCException.class}) 
public ResponseEntity handleSubClassException(SuperclassExceptionexception e) {
//handle more specific
}
Run Code Online (Sandbox Code Playgroud)

但即使抛出子类异常,它也永远不会去handleSubClassException。

java exception spring-boot

5
推荐指数
1
解决办法
3492
查看次数

如何存储异常

我想抛出异常并显示它.在我的IF块中,我抛出异常.我是否必须存储异常以将其作为变量传递到前面的方法中.

if(count !=0) {
  throw new Exception();
  eventLogger.logError("The count is not zero",e)
}
else{
    // do something else
}
Run Code Online (Sandbox Code Playgroud)

记录器具有Throwable错误作为参数.

logError(String description, Throwable error);
Run Code Online (Sandbox Code Playgroud)

如何将抛出的异常传递给此方法

java if-statement exception

4
推荐指数
1
解决办法
133
查看次数

使用 Mockito 间谍模拟类中的方法

引用同一个类中的模拟方法

class Temp() {

public boolean methodA(String param) {

     try {

         if(methodB(param))
               return true;

         return false;
     } catch (Exception e) {
           e.printStackTrace();
     }
}
}
Run Code Online (Sandbox Code Playgroud)

测试类

@Test
public void testMethodA() {

Temp temp = new Temp();
Temp spyTemp = Mockito.spy(temp);

Mockito.doReturn(true).when(spyTemp).methodB(Mockito.any()); 
boolean status = temp.methodA("XYZ");

Assert.assertEquals(true, status);
}
Run Code Online (Sandbox Code Playgroud)

当调用真实类 temp 到 methodA 时,应该返回模拟的方法 B 值。因此返回true。为什么这是不正确的。我遇到了同样的问题。我想在真正的班级上运行测试,而不是按照答案的建议运行模拟对象。我想运行类 methodA 并在调用时期望模拟对象 spyTemp methodB 值

java junit mockito

0
推荐指数
1
解决办法
6970
查看次数