You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							26 lines
						
					
					
						
							846 B
						
					
					
				
			
		
		
	
	
							26 lines
						
					
					
						
							846 B
						
					
					
				| <?php
 | |
| namespace Tests\ModbusMaster;
 | |
| 
 | |
| use PHPModbus\ModbusMaster;
 | |
| 
 | |
| class Fc22MaskWriteRegisterTest extends MockServerTestCase
 | |
| {
 | |
|     public function testFc22MaskWriteRegister()
 | |
|     {
 | |
|         $mockResponse = 'd4350000000800163000fffb0004';
 | |
|         $clientData = static::executeWithMockServer($mockResponse, function ($port) {
 | |
|             $modbus = new ModbusMaster('127.0.0.1', 'TCP');
 | |
|             $modbus->port = $port;
 | |
| 
 | |
|             $bitValue = true;
 | |
|             $bitNumber = 2;
 | |
|             $andMask =  0xFFFF ^ pow(2, $bitNumber) ;
 | |
|             $orMask =  0x0000 ^ (pow(2, $bitNumber) * $bitValue ) ;
 | |
| 
 | |
|             $this->assertTrue($modbus->fc22(0, 12288, $andMask, $orMask));
 | |
|         });
 | |
| 
 | |
|         $packetWithoutTransactionId = substr($clientData[0], 4);
 | |
|         $this->assertEquals('0000000800163000fffb0004', $packetWithoutTransactionId);
 | |
|     }
 | |
| } |