This sort of thing can look simple to solve at first, but there are significant problems in a multi-user environment.
If you want no gaps in any number sequence then you cannot use autoincrement as they will inevitably have them.
Looking up the last number and then generating the next one in code will fail when you have concurrent inserts; ie I look up the number just before someone else inserts a new record so my calculated id has been used already by the time my insert runs. To overcome this you have to use transactions and table locks, which means you will need to use an InnoDB table for this.
The simplest way in the end will be to create your own version of the autoinc process.
Create an InnoDB table with 2 columns, this will store the last number used at each location.
table location_index
prefix : to hold each location prefix eg USG1
last number: which will store the last number used for that location
On insert you start a transaction on that table, lock the row for the given location, select the last number and add 1 to calculate the next printer id.
Insert the new printer record with the calculated id into the main printer table.
Select the new record and check it is correct.
Only then do you update the last number column in the index table and release the lock.
Simple to do in mainstream clent/server databases that support stored procedures, but a major problem in the php/mysql world because transactions are very difficult to implement.