# Loading a bitmap from USER partition to VC4

**URL:** <https://community.br-automation.com/t/loading-a-bitmap-from-user-partition-to-vc4/2078>\
**Category:** HMI & Visualization\
**Tags:** vc4\
**Created:** [February 1, 2024, 2:44pm UTC](https://community.br-automation.com/t/loading-a-bitmap-from-user-partition-to-vc4/2078 "2024-02-01T14:44:38Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Curtis\_Weyenberg](https://avatars.discourse-cdn.com/v4/letter/c/FF8800/32.png) [@Curtis\_Weyenberg](https://community.br-automation.com/u/Curtis_Weyenberg)\
**Post date:** [February 1, 2024, 2:44pm UTC](https://community.br-automation.com/t/loading-a-bitmap-from-user-partition-to-vc4/2078/1 "2024-02-01T14:44:38Z")

</div>

Hello,

I am trying to load a bitmap stored in a folder on the user partition to VC4. There may be a translation error in the help documentation for VA\_LoadBitmap and VA\_BlitBitmap because it says to use a pointer to a pointer of sVCBitmap. GUID fd1fd7c6-37db-46e9-8a47-2088277e8919

Notes:  
The bitmap is stored on F:/Barcode/ and has the name Camera1.png. This image gets updated via FTP so it will need to be reloaded as needed.

When I set LoadBitmap to TRUE, i get an updated stVCBitmap1.vpInternalData. The other parts of the structure do not get updated. When setting ShowBitmap to TRUE, nothing happens on the HMI.

(_Vars_)  
VAR CONSTANT  
VISUALIZATION\_NAME : STRING[80] := ‘FT50’;  
DEV\_BARCODE : STRING[16] := ‘Barcode’;//Assigned device in CPU config F:\Barcode  
END\_VAR

VAR  
TestLoadBitmap : BOOL := 0;  
strBitmap1 : STRING[80] := ‘’;  
strBitmap1Path : STRING[80] := ‘’;  
pBitmap : REFERENCE TO sVCBitmap;  
stVCBitmap1 : {REDUND\_UNREPLICABLE} sVCBitmap;  
status\_VA\_LoadBitmap : UINT := 0;  
TestShowBitmap : BOOL := 0;  
status\_VA\_BlitBitmap : UINT := 0;  
LoadBitmap : BOOL := 0;  
ShowBitmap : BOOL := 0;  
uiStatusAccess : UINT := 0;  
uiStep : INT := 0;  
uiStatus : UINT := 0;  
END\_VAR

```
IF (VC_HANDLE = 0) THEN
	VC_HANDLE := VA_Setup(1, VISUALIZATION_NAME);	
END_IF

IF (VC_HANDLE <> 0) THEN
	uiStatusAccess := VA_Saccess(1, VC_HANDLE);	
	IF (uiStatusAccess = 0) THEN
		
		CASE uiStep OF
			
			0: (* Wait State*)
				IF LoadBitmap THEN
					LoadBitmap := FALSE;
					strBitmap1 := 'Camera1.png';
					strBitmap1Path := 'Barcode/Camera1.png';
					stVCBitmap1.vpInternalData := 0;//Need to initialize to zero when loading
					//stVCBitmap1.vpData := 
					uiStep := 1;
				ELSIF ShowBitmap THEN
					ShowBitmap := FALSE;
					uiStep := 2;
				END_IF
			1://Load bitmap
				//uiStatus := VA_LoadBitmap(1,VC_HANDLE,DEV_BARCODE,strBitmap1,ADR(pBitmap ));
				uiStatus := VA_LoadBitmap(enable := 1,VCHandle := VC_HANDLE,ucDevice := DEV_BARCODE,ucPath := strBitmap1,ppBitmap := ADR(stVCBitmap1));
				IF (uiStatus = 0) THEN
					uiStep := 0;
				ELSIF (uiStatus = 7000) THEN
					(*Busy*)
				ELSE(*Go to Error Step*)
					uiStep := 10;
				END_IF
			2://Blit bitmap (show on HMI)
				//uiStatus := VA_BlitBitmap(1,VC_HANDLE,ADR(pBitmap), 100, 100, 0,0,0,0,0);
				uiStatus := VA_BlitBitmap(1,VC_HANDLE,ADR(stVCBitmap1), 100, 100,0,0,0,0,0);
				IF (uiStatus = 0) THEN
					uiStep := 0;
				ELSIF (uiStatus = 7000) THEN
					(*Busy*)
				ELSE(*Go to Error Step*)
					uiStep := 10;
				END_IF					
		END_CASE
		VA_Srelease(1, VC_HANDLE);
	END_IF
END_IF

```

---

<div class="post-metadata">

**Author:** ![valerio.manenti](https://dub1.discourse-cdn.com/brcommunity/user_avatar/community.br-automation.com/valerio.manenti/32/11712_2.png) [@valerio.manenti](https://community.br-automation.com/u/valerio.manenti)\
**Post date:** [February 2, 2024, 2:40am UTC](https://community.br-automation.com/t/loading-a-bitmap-from-user-partition-to-vc4/2078/2 "2024-02-02T02:40:11Z")

</div>

Hi Curtis,  
I reviewed a little bit your code and I was able to see a bitmap in my visualization:

 ![image](https://europe1.discourse-cdn.com/brcommunity/original/2X/b/b4d55b0bf5f53ebb46de5a2a73d603bebf8558be.png)  
[\_\_\_\_LOAD.zip](https://community.br-automation.com/uploads/short-url/8A75bf7x8Ax1QUHRDR7wVc6wmSc.zip) (1.3 KB)

Ciao  
Valerio

---

<div class="post-metadata">

**Author:** ![Curtis\_Weyenberg](https://avatars.discourse-cdn.com/v4/letter/c/FF8800/32.png) [@Curtis\_Weyenberg](https://community.br-automation.com/u/Curtis_Weyenberg)\
**Post date:** [February 2, 2024, 8:16pm UTC](https://community.br-automation.com/t/loading-a-bitmap-from-user-partition-to-vc4/2078/3 "2024-02-02T20:16:15Z")

</div>

Thank you Valerio,

I was able to get my image to load with your changes. I also changed to a bmp because the png colors didn’t match the VC profile. Here is my working test code.

strBitmap1 := ‘Camera1.bmp’;

```
IF (VC_HANDLE = 0) THEN
	VC_HANDLE := VA_Setup(1, VISUALIZATION_NAME);	
END_IF

IF (VC_HANDLE <> 0) THEN
	uiStatusAccess := VA_Saccess(1, VC_HANDLE);	
	IF (uiStatusAccess = 0) THEN
		
		CASE uiStep OF
			
			0: (* Wait State*)
				IF LoadBitmap THEN
					LoadBitmap := FALSE;
					strBitmap := strBitmap1;
					stVCBitmap1.vpInternalData := 0;//Need to initialize to zero when loading
					uiStep := 1;
				ELSIF ShowBitmap THEN
					ShowBitmap := FALSE;
					uiStep := 2;
				END_IF
			1://Load bitmap
				uiStatus := VA_LoadBitmap(enable := 1,VCHandle := VC_HANDLE,ucDevice := DEV_BARCODE,ucPath := strBitmap,ppBitmap := ADR(ppBitmap));
				IF (uiStatus = 0) THEN
					uiStep := 2;
				ELSIF (uiStatus = 7000) THEN
					(*Busy*)
				ELSE(*Go to Error Step*)
					uiStep := 10;
				END_IF
			2://Blit bitmap (show on HMI)
				uiStatus := VA_BlitBitmap(1,VC_HANDLE,ppBitmap, 0, 0,0,0,50,50,0);
				IF (uiStatus = 0) THEN
					uiStep := 3;
				ELSIF (uiStatus = 7000) THEN
					(*Busy*)
				ELSE(*Go to Error Step*)
					uiStep := 10;
				END_IF	
			3: //Free bitmap
				uiErrorBitmapFromFile := VA_FreeBitmap(1, VC_HANDLE, ADR(ppBitmap));
				IF (uiErrorBitmapFromFile = 0) THEN
					uiStep := 0;
					ppBitmap := ADR(pBitmap);(* Reinitialize ppBitmap to have the possibility to use it again *)
					//LoadBitmap := TRUE;
				END_IF				
		END_CASE
		VA_Srelease(1, VC_HANDLE);
	END_IF
END_IF

```
